前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1、leveldb入门体验

1、leveldb入门体验

原创
作者头像
小林帮
修改2021-03-21 18:34:27
7710
修改2021-03-21 18:34:27
举报

简介

leveldb是google开源的一个高性能kv数据存储库。

特点

  • 基于LSM机制存储数据,读写性能高;
  • key、value支持任意的byte类型数组,不单单支持字符串;
  • 一个持久化存储的KV系统,将大部分数据存储到磁盘上;
  • 按照key值顺序存储数据;
  • 操作接口简单,主要接口为Put、Get、Delete;
  • 支持数据snapshot快照功能,读操作不受写操作影响,在读操作过程中始终看到一致的数据;
  • 支持数据压缩(snappy压缩)操作,有效减小存储空间、并增快IO效率;

使用场景

  • 单机kv存储引擎;

使用样例

编译leveldb库

代码语言:txt
复制
# git clone https://github.com/google/leveldb.git
# cd leveldb/
# git checkout -b 1.20 v1.20
// 编译
# make
// 安装
# cp -rf include/leveldb/ /usr/include/
# cp out-shared/libleveldb.so* /usr/lib64/

使用样例

代码语言:txt
复制
// test1.cpp
#include <cassert>
#include <iostream>
#include "leveldb/db.h"

int main() {
    leveldb::DB *db;
    leveldb::Options options;
    options.create_if_missing = true;
    leveldb::Status status = leveldb::DB::Open(options, "./test.db", &db);
    assert(status.ok());
    std::cout << "leveldb open success!" << std::endl;

    std::string key = "testkey1";
    std::string value = "testvalue1";
    db->Put(leveldb::WriteOptions(), key, value);
    std::cout << "put key " << key << " success" << std::endl;

    std::string value2;
    leveldb::Status s = db->Get(leveldb::ReadOptions(), key, &value2);
    if (s.ok()) {
        std::cout << "found key:" << key << ",value:" << value2 << std::endl;
    }
	
    s = db->Delete(leveldb::WriteOptions(), key);
    if (s.ok()) {
        std::cout << "delete key success which key:" << key << std::endl;
    }

    s = db->Get(leveldb::ReadOptions(), key, &value2);
    if (s.IsNotFound()) {
        std::cout << "can not found after delete for key:" << key << std::endl;
    }

    delete db;
    return 0;
}

编译

代码语言:txt
复制
# g++ -lpthread -lleveldb -o test1 test1.cpp

运行

代码语言:txt
复制
# ./test1 
leveldb open success!
put key testkey1 success
found key:testkey1,value:testvalue1
delete key success which key:testkey1
can not found after delete for key:testkey1

数据文件

代码语言:txt
复制
# tree test.db/
test.db/
├── 000003.log
├── CURRENT
├── LOCK
├── LOG
└── MANIFEST-000002

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • 特点
    • 使用场景
    • 使用样例
      • 编译leveldb库
        • 使用样例
          • 数据文件
          相关产品与服务
          数据保险箱
          数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档