RocksDB使用入门 Mac

1 篇文章 0 订阅
1 篇文章 0 订阅

RocksDB使用入门 Mac

从事数据库底层研究领域时,经常听到RocksDB这个数据库名。
我想大多数人和我一样,知道这个名字,却迟迟没有动手去了解它。
这篇文章就简单介绍怎么在MacOS下,使用RocksDB,并对一些基本知识进行简要介绍。

1. RocksDB简要介绍

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

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

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

目前: RocksDB使用LSM存储引擎,纯C++编写。Java版本RocksJava正在开发中。

在使用C++版本的库时,最好在C++代码下进行使用,C语言下不知道可不可以使用,没有试过。

更多有关RocksDB的介绍参考:

关于RocksDB的详细使用介绍:

2. RocksDB 安装

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

brew install rocksdb

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

brew info rocksdb

安装结果如下。

zzh@zzhdeMBP ~ % brew info rocksdb
rocksdb: stable 6.7.3 (bottled)
Embeddable, persistent key-value store for fast storage
https://rocksdb.org/
/usr/local/Cellar/rocksdb/6.7.3 (106 files, 65.2MB) *
  Poured from bottle on 2020-06-20 at 21:37:50
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/rocksdb.rb
==> Dependencies
Required: gflags ✔, lz4 ✔, snappy ✔, zstd ✔
==> Analytics
install: 481 (30 days), 3,107 (90 days), 17,874 (365 days)
install-on-request: 379 (30 days), 1,581 (90 days), 7,980 (365 days)
build-error: 0 (30 days)
zzh@zzhdeMBP ~ % 

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

3. 使用示例

更多内容可以参考前面所说的中文版Wiki的基本操作章节:
https://rocksdb.org.cn/doc/Basic-Operations.html

代码目录:

  • 使用入门
    • main.cpp
    • Makefile
  1. 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;
}
  1. Makefile文件内容:
CXX=g++ -std=c++11
CXXFLAGS=-lrocksdb  # 注意添加链接库

all: main

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

run: main
	./main

clean:
	rm -f main *.o
  1. 运行结果:
zzh@zzhdeMBP 使用入门 % 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.
zzh@zzhdeMBP 使用入门 % 

编译时需要注意两点:

  • 支持C11, 添加选项-std=c++11
  • 添加链接库: -lrocksdb
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好,以下是 rocksdb入门教程: RocksDB 是一个高效、持久化的键值存储库,由 Facebook 开发。 1. 准备环境和安装 RocksDB: - 安装 rocksdb library:https://github.com/facebook/rocksdb/blob/master/INSTALL.md - 安装 C++ 编译器 2. 创建一个 RocksDB 数据库: ``` #include <rocksdb/db.h> int main() { rocksdb::DB* db; rocksdb::Options options; options.create_if_missing = true; rocksdb::Status status = rocksdb::DB::Open(options, "/path/to/db", &db); assert(status.ok()); delete db; return 0; } ``` 3. 写入数据到 RocksDB 数据库: ``` #include <rocksdb/db.h> int main() { rocksdb::DB* db; rocksdb::Options options; options.create_if_missing = true; rocksdb::Status status = rocksdb::DB::Open(options, "/path/to/db", &db); assert(status.ok()); rocksdb::Status put_status = db->Put(rocksdb::WriteOptions(), "key1", "value1"); assert(put_status.ok()); std::string value; rocksdb::Status get_status = db->Get(rocksdb::ReadOptions(), "key1", &value); assert(get_status.ok()); std::cout << value << std::endl; delete db; return 0; } ``` 4. 读取数据并遍历 RocksDB 数据库: ``` #include <rocksdb/db.h> int main() { rocksdb::DB* db; rocksdb::Options options; options.create_if_missing = true; rocksdb::Status status = rocksdb::DB::Open(options, "/path/to/db", &db); assert(status.ok()); rocksdb::Iterator* it = db->NewIterator(rocksdb::ReadOptions()); for (it->SeekToFirst(); it->Valid(); it->Next()) { std::cout << it->key().ToString() << ": " << it->value().ToString() << std::endl; } assert(it->status().ok()); delete it; delete db; return 0; } ``` 希望这个入门教程能够帮助你学习 RocksDB。如果有任何问题,请随时与我交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值