栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leveldb简单使用样例

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leveldb简单使用样例

个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

下面附几个leveldb的简单使用样例,包含写数据、查数据、遍历数据,仅供参考。

写数据
#include "leveldb/db.h"
int main(int argc, char** argv)
{
    if (argc < 2){
        printf("Usage: %s dbnamen", argv[0]);
        return -1;
    }
    char* dbname = argv[1];
    leveldb::DB* pDB;
    leveldb::Options opts;
    opts.create_if_missing = true;
    leveldb::Status st = leveldb::DB::Open(opts, dbname, &pDB);
    if (!st.ok()){
        printf("open db<%s> failed: %sn", dbname, st.ToString().c_str());
        return -1;
    }
    leveldb::WriteOptions wopts;
    for (int i=0; i<20; i++){
       std::string key(3, i+'a'), value(3, i+'A');
       st = pDB->Put(wopts, key, value);
       if (!st.ok()){
           printf("Put pair<%s-%s> failed!n", key.c_str(), value.c_str()); 
           return -1;
       }
       printf("Put pair<%s-%s>n", key.c_str(), value.c_str()); 
    }
    delete pDB;
    return 0;
}

查数据
#include "leveldb/db.h"
int main(int argc, char** argv)
{
    if (argc < 2){
        printf("Usage: %s dbnamen", argv[0]);
        return -1;
    }
    char* dbname = argv[1];
    leveldb::DB* pDB;
    leveldb::Options opts;
    leveldb::Status st = leveldb::DB::Open(opts, dbname, &pDB);
    if (!st.ok()){
        printf("open db<%s> failed: %sn", dbname, st.ToString().c_str());
        return -1;
    }
    leveldb::ReadOptions ropts;
    for (int i=0; i<10; i++){
       std::string key(3, i+'a'), value;
       st = pDB->Get(ropts, key, &value);
       if (!st.ok()){
           printf("Get key<%s> value failed!n", key.c_str()); 
           return -1;
       }
       printf("Get pair<%s-%s>n", key.c_str(), value.c_str()); 
    }    
    delete pDB;
    return 0;
}

遍历数据
#include "leveldb/db.h"
int main(int argc, char** argv)
{
    if (argc < 2){
        printf("Usage: %s dbnamen", argv[0]);
        return -1;
    }
    char* dbname = argv[1];
    leveldb::DB* pDB;
    leveldb::Options opts;
    leveldb::Status st = leveldb::DB::Open(opts, dbname, &pDB);
    if (!st.ok()){
        printf("open db<%s> failed: %sn", dbname, st.ToString().c_str());
        return -1;
    }
    leveldb::Iterator* iter = pDB->NewIterator(leveldb::ReadOptions());
    iter->SeekToFirst();
    int n = 0;
    while(iter->Valid()){
        leveldb::Slice key = iter->key();
        leveldb::Slice value = iter->value();
        printf("%d: (%s -> %s)n", ++n, key.ToString().c_str(), value.ToString().c_str());
        iter->Next();
    }
    delete iter;
    delete pDB;
    return 0;
}

make编译语句:
g++ -o $@ $^ -lleveldb -std=c++11

个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954166.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号