面试听说他们修改redis加了leveldb做落地存储,百度一通果然挺厉害的,先编译leveldb看下效果
原文件很容易下载 我下载两个版本在centos下解压编译
cmake .
make
竟然缺少 SQLITE_CHECKPOINT_FULL, sqlite3_wal_checkpoint_v2 报错:
我在/usr/include/sqlite3.h 确实没找这两个,但是作为测试工具,在不升级当前操作系统sqlite可以不管这个就简单粗暴注释掉了就通过了
不使用安装命令可直接连接编译,也可以把头文件和动态文件放到/user/下面使用ldconfig命令加载下
#include "./leveldb-master/include/leveldb/db.h"
#include <cassert>
#include <iostream>
using namespace std;
using namespace leveldb;
int main() {
leveldb::DB *db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "leveldb", &db);
assert(status.ok());
status = db->Put(WriteOptions(), "leveldb", "Hello World!");
assert(status.ok());
string res;
status = db->Get(ReadOptions(), "leveldb", &res);
assert(status.ok());
cout << res << endl;
delete db;
return 0;
}
编译命令 g++ -I ./leveldb-master/include/ leveldb.cpp -lpthread ./leveldb-master/libleveldb.a -std=c++11
结果和生成文件如下