RocksDB使用入门macOS Big Sur (11.6.6)

这篇文章就简单介绍怎么在macOS下使用RocksDB。

1. RocksDB简要介绍

RocksDB是一个可嵌入的、持久型的Key-Value存储。

不像MySQL,PostgreSQL这样数据库分客户端与服务器端。实际上,可以把它当作一个第三方库,在自己的代码中进行引用,调用相应的接口就可以使用,比如使用C/C++语言,直接在源代码中include相应的头文件就可以。

与嵌入式数据库SQLite的使用比较类似。

目前: RocksDB使用LSM存储引擎,纯C++编写。Java版本RocksJava也已经完美支持。

更多有关RocksDB的介绍参考:

关于RocksDB的详细使用介绍:

2. RocksDB 安装

macOS上安装RocksDB非常简单,不用单独安装其他任何依赖。直接使用brew工具安装即可。

$ brew install rocksdb

可以运行一下命令来查看安装信息。

$ brew info rocksdb

安装结果如下。

$ brew info rocksdb
rocksdb: stable 7.0.3 (bottled), HEAD
Embeddable, persistent key-value store for fast storage
https://rocksdb.org/
/usr/local/Cellar/rocksdb/7.0.3 (138 files, 40.4MB) *
  Poured from bottle on 2022-06-20 at 14:18:52
From: https://mirrors.ustc.edu.cn/homebrew-core.git/Formula/rocksdb.rb
License: GPL-2.0-only or Apache-2.0
==> Dependencies
Build: cmake ✔
Required: gflags ✔, lz4 ✔, snappy ✔, zstd ✔
==> Options
--HEAD
	Install HEAD version
==> Analytics
install: 605 (30 days), 2,584 (90 days), 12,941 (365 days)
install-on-request: 561 (30 days), 2,247 (90 days), 10,385 (365 days)
build-error: 1 (30 days)

其他操作系统上的安装可以参考:

3. 使用示例

代码目录:

  • main.cpp
  • Makefile

main.cpp文件内容:

#include <iostream>
#include <cassert>
#include "rocksdb/db.h"

using namespace std;

int main() {
    rocksdb::DB* db;
    rocksdb::Options options;
    options.create_if_missing = true;
    rocksdb::Status status = rocksdb::DB::Open(options, "/tmp/testdb", &db);
    assert(status.ok());
    cout << "Open rocksdb success." << endl;

    string key1 = "1";
    string value1 = "aaaaa";
    status = db->Put(rocksdb::WriteOptions(), key1, value1);
    assert(status.ok());
    printf("Put[%s,%s] success.\n", key1.c_str(), value1.c_str());
    
    string value;
    status = db->Get(rocksdb::ReadOptions(), key1, &value);
    assert(status.ok());
    printf("Put key[%s] = %s\n", key1.c_str(), value.c_str());

    status = db->Delete(rocksdb::WriteOptions(), key1);
    assert(status.ok());
    printf("Delete key[%s] success.\n", key1.c_str());

    delete db;

    return 0;
}

Makefile文件内容:

CXX=g++ -std=c++11
CXXFLAGS=-lrocksdb  # 注意添加链接库

all: main

main: main.cpp
	$(CXX) $(CXXFLAGS) -o $@ $< 

run: main
	./main

clean:
	rm -f main *.o

运行结果:

make run
g++ -std=c++11 -lrocksdb   -o main main.cpp 
./main
Open rocksdb success.
Put[1,aaaaa] success.
Put key[1] = aaaaa
Delete key[1] success.
编译时需要注意两点:
  • 支持C11, 添加选项-std=c++11
  • 添加链接库: -lrocksdb

参考链接


RocksDB使用入门 Mac

发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注