2013-10-17

SSDB 的 C++ 客户端接口

Views: 44195 | 11 Comments

SSDB 本身是用 C++ 语言编写的, 所以天生就支持 C++ 客户端 API. SSDB 源码中自带的 leveldb-import.cpp, ssdb-dump.cpp 等程序, 也是 C++ 客户端的例子. 不过, 这些 API 依赖整个项目, 编译和链接的参数非常繁琐. 因此, 有必要开发对用户友好的 C++ API, 减少依赖, 方便开发 SSDB 的 C++ 客户端应用.

我很高兴的通知, 接口简单, 对用户友好的 SSDB 的 C++ 客户端 API 已经有了! 并且, 有了相应的 API 文档(我相信文档对于一个软件的作用是非常重要的). 我可以用一行代码了显示这个 API 的使用是如何的简单:

g++ -o hello-ssdb hello-ssdb.cpp libssdb.a

hello-ssdb.cpp 就是一个使用了 SSDB C++ API 的客户端程序, 上面的一行命令用于编译这个程序, 生成可执行文件.

SSDB C++ API 包括了两类方法, 一类是简单方法, 另一类是语义化的方法. 简单方法就是在一个统一的函数中传递任意命令和参数. 而语义化的方法即类型 get(), set() 这样顾名思义的方法. 因为时间的缘故, 后一种方法还没有实现.(更新: 两类方法都已实现.)

欢迎大家使用, 如果有什么意义, 欢迎反馈!

SSDB C++ 客户端接口文档: http://www.ideawu.com/ssdb/docs/cpp/

Related posts:

  1. SSDB NoSQL 数据库引擎介绍
  2. SSDB 支持 iOS 设备使用了
  3. SSDB 已经支持在线备份功能!
  4. SSDB 现在已经支持 Java 语言了!
  5. SSDB 增加 zrank, zrange 命令
Posted by ideawu at 2013-10-17 23:27:05 Tags: , ,

11 Responses to "SSDB 的 C++ 客户端接口"

  • 你好,我使用了 ssdb ,但是编译的时候遇到这个问题,有点摸不着头绪,能帮忙看看吗?


    karmar_cache]# g++ -Wall -g url.cpp main.cpp -L/usr/local/lib/ -L/root/ssdb/api/cpp -I./rapidjson/ -I/usr/include/python2.7 -I/root/ssdb/api/cpp -lm -lssdb-client -shared -fPIC -o karmar.so -O3
    /usr/bin/ld: /root/ssdb/api/cpp/libssdb-client.a(SSDB_impl.o): relocation R_X86_64_32 against `.rodata.str1.1′ can not be used when making a shared object; recompile with -fPIC
    /root/ssdb/api/cpp/libssdb-client.a: error adding symbols: Bad value
    collect2: error: ld returned 1 exit status

    ———–
    使用 ssdb 的代码在 main.cpp 里面, 最终目的是生成一个可以给 python 调用的 karmar.so 文件 Reply
  • 增加个async的c++接口吧 Reply
  • 提个建议:加上ZRANK命令,返回zset中member的排名。
    我这个有个功能刚好需要某个member的排名,取名次很不方便。 Reply
    @whl: Hi, 1.6.3 版本已经加入了 zrank 命令. 不过, 需要注意的是, 这个命令建议在离线环境中使用, 不建议在线上环境使用, 因为这个命令会遍历表, 排名最后的数据需要遍历整个 zset. Reply
    @whl: 好的, 我考虑加上. Reply
  • 强烈支持!之前我都是把link.cpp相关的文件拷到自己项目中,重新修改编译的。。 Reply
    @whl: 谢谢! 如果遇到问题, 欢迎反馈. Reply
    @ideawu:
    并发对一个key进行incr,如何保证结果正确的?
    我看到源码里,是先get再set的,在get和set之间key的值如果改变了的话,这样结果就不对了。 Reply
    @whl: 服务器通过加锁来保证所有的写都是序列化的: Transaction trans(binlogs); Reply
    @ideawu: ssdb是单线程写的,为什么还要上锁 Reply

Leave a Comment