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/
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
我这个有个功能刚好需要某个member的排名,取名次很不方便。 Reply
并发对一个key进行incr,如何保证结果正确的?
我看到源码里,是先get再set的,在get和set之间key的值如果改变了的话,这样结果就不对了。 Reply