RocksDB简单使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocksDB简单使用相关的知识,希望对你有一定的参考价值。
参考技术A 由于需要从github获取所以需要先安装gityum install git
后来更新了gflags需要用cmake进行编译,修改之后的步骤:
yum install snappy snappy-devel
yum install zlib zlib-devel
yum install bzip2 bzip2-devel
yum install lz4-devel
yum install libasan
编译静态库,release mode,获得 librocksdb.a
编译动态库,获得 librocksdb.so ,release mode,获得 lbrocksdb.so
编译获取动态库之后将其拷贝到/usr/lib中(以下操作均在root模式下机型,非root模式需要添加 sudo )
编译:
对于找不到gflags的错误,需要把 /usr/local/lib 添加到动态链接库里面
为了让这个设置永久生效,可以在 ~/.bash_profile 文件中添加设置指令
rocksdb:简单的操作Demo
当前环境:jdk1.8
、win10
、rocksdb 6.27.3
1. 声明
当前内容主要为记录使用rocksdb(一个key-value的数据库)的demo,当前内容借鉴官方文档(由于在Apache Storm启动的时候发现使用了rocksdb)
当前内容主要为:存放数据和取出数据的操作
当前pom.xml
<dependency>
<groupId>org.rocksdb</groupId>
<artifactId>rocksdbjni</artifactId>
<version>6.27.3</version>
</dependency>
2. 操作Demo
private static Charset UTF_8 = Charset.forName("utf-8");
public static void main(String[] args)
RocksDB rocksDb = null;
try
// 默认直接创建一个文件夹testdb
rocksDb = RocksDB.open("/testdb");
System.out.println("打开rocksdb 成功....");
String key = "id";
String value = "1";
put(rocksDb, key, value);
System.out.println("存放值成功....");
String getValue = get(rocksDb, key, "0");
System.out.println(getValue);
catch (RocksDBException e)
// TODO Auto-generated catch block
e.printStackTrace();
finally
if (rocksDb != null)
rocksDb.close();
public static String get(RocksDB rocksDb, String key, String defaultValue)
byte[] keyBytes = key.getBytes(UTF_8);
try
byte[] valueBytes = rocksDb.get(keyBytes);
String value = new String(valueBytes, UTF_8);
return value;
catch (RocksDBException e)
// TODO Auto-generated catch block
e.printStackTrace();
return defaultValue;
public static boolean put(RocksDB rocksDb, String key, String value)
byte[] keyBytes = key.getBytes(UTF_8);
byte[] valueBytes = value.getBytes(UTF_8);
try
rocksDb.put(keyBytes, valueBytes);
return true;
catch (RocksDBException e)
// TODO Auto-generated catch block
e.printStackTrace();
return false;
由于是key-value的存储方式,且只能存放byte所以需要在取出和使用的时候转换为String,批量读取可以使用multiGetAsList方法实现(需要将查询的key转换为byte[])
3. 测试结果
在当前的根目录下自动创建了一个testdb的文件夹(个人测试写入10万key-value需要1.2s,查询需要400ms,占用空间不到1M)
这里在启动nimbus在arm平台中出现报错的情况,一看就是平台不兼容
Caused by: java.lang.UnsatisfiedLinkError: /tmp/librocksdbjni6447121660866347058.so: /tmp/librocksdbjni6447121660866347058.so: 无法打开共享对象文件: 没有那个文件或目录 (Possible cause: can't load IA 32-bit .so on a ARM-bit platform)
以上是关于RocksDB简单使用的主要内容,如果未能解决你的问题,请参考以下文章