经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
Ubuntu安装Rocksdb
来源:cnblogs  作者:鉴尘人  时间:2021/1/18 16:38:08  对本文有异议

前言

第一次写博客^_^

系统是全新的Ubuntu20.04,什么都没有,一切从头开始安装

查看gcc和g++版本

  1. sudo apt-get update
  2. gcc --version
  3. g++ --version

注意这里是俩杠。4.7以上不用更新,下面代表正常,第二行是版本号。

没有的话安装:

  1. sudo apt install build-essential

安装必要的一些库

  1. sudo apt-get install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev

下载,安装

  1. wget https://github.com/facebook/rocksdb/archive/v6.6.4.zip #6.6.4 (2020-01-31)

此过程时间较长,且容易失败。但这是几种命令行下载方法中失败率最低的一种了,嫌慢可以在Windows下用百度云之类的下载别人下载好的,然后用远程软件传(貌似更慢哈哈)。

  1. unzip v6.6.4.zip
  2. cd rocksdb-6.6.4/
  3. make static_lib && sudo make install-static
  4. make shared_lib && sudo make install-shared

其中第一步里全新的系统没有zip的话安装(一般都有,有请忽略↓):

  1. sudo apt-get install zip

另:后两步会消耗大量时间,以“$DEBUG_LEVEL is 0”开头,后面一堆CC,可以去干点别的事。

设置环境变量

  1. #echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.conf
  2. sudo ldconfig -v #refresh the ldconfig cache
  3. INSTALL_PATH=/usr
  4. make shared_lib && sudo make install-shared
  5. sudo ldconfig -v #refresh the ldconfig cache

到这里就算是安装成功了,接下来是写个小程序测一下以及db_bench的测试。

测试程序

创建一个c++程序,命名为test.cpp

先vim test.cpp创建了文件,然后按“i”键进入插入模式,复制粘贴下面的代码,然后按“esc”,输入“:wq”,也就是保存并退出。

  1. 1 #include <cstdio>
  2. 2 #include <string>
  3. 3 #include "rocksdb/db.h"
  4. 4 #include "rocksdb/slice.h"
  5. 5 #include "rocksdb/options.h"
  6. 6
  7. 7 using namespace std;
  8. 8 using namespace rocksdb;
  9. 9
  10. 10 const std::string PATH = "/tmp/rocksdb_tmp";
  11. 11 int main(){
  12. 12 DB* db;
  13. 13 Options options;
  14. 14 options.create_if_missing = true;
  15. 15 Status status = DB::Open(options, PATH, &db);
  16. 16 assert(status.ok());
  17. 17 Slice key("foo");
  18. 18 Slice value("bar");
  19. 19 std::string get_value;
  20. 20 status = db->Put(WriteOptions(), key, value);
  21. 21 if(status.ok()){
  22. 22 status = db->Get(ReadOptions(), key, &get_value);
  23. 23 if(status.ok()){
  24. 24 printf("get %s success!!\n", get_value.c_str());
  25. 25 }else{
  26. 26 printf("get failed\n");
  27. 27 }
  28. 28 }else{
  29. 29 printf("put failed\n");
  30. 30 }
  31. 31 delete db;
  32. 32 }

 

编译运行

动态编译:

  1. g++ -std=c++11 -o rocksdbtest test.cpp -lrocksdb -lpthread -ldl

最后这个 -ldl很重要

运行:

  1. ./rocksdbtest

或者静态编译:

  1. g++ -std=c++11 -o rocksdbtest test.cpp ./librocksdb.a -lpthread -lsnappy -lz -lbz2 -lzstd /usr/lib/x86_64-linux-gnu/liblz4.a

(很长,都在同一行,这个加不加-ldl没试)

运行成功后应该输出get bar success!!,有错会报错。

db_bench测试

此时看文件我们会发现有很多的.d文件,这是make过程残留的,不知道是makefile文件没写好还是咋回事,清除方式是下面

  1. make clean

现在再看(ls命令)是不是清爽多了,现在进行db_bench的测试

  1. make db_bench

注意输入这句话的时候不要想用Tab键补全,不然会卡很久(不要问我怎么知道的)。

make成功大致是这样的,当然也需要很长时间↓

 

 完成后进行db_bench测试

  1. ./db_bench

参数:db_bench测试时可以加很多很多的参数,在后面直接加“--”加参数名加参数值即可,具体请直接搜索rocksdb参数。

例如./db_bench --benchmarks="fillseq"表示顺序写入。

可以通过可以通过 ./db_bench --help自己查看想要的配置参数

完事记得

  1. make clean

数据存在哪

首先输入“cd /”进入根目录,然后“cd tmp”进入临时文件存储区,然后找到以rocksdb开头的文件夹即是。

bye~

参考

https://blog.jeffli.me/blog/2016/12/02/getting-started-with-rocksdb-in-centos-7/

https://zhang0peter.blog.csdn.net/article/details/96869454

原文链接:http://www.cnblogs.com/renjc/p/rocksdb-install.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号