rocksdb:简单的操作Demo

当前环境:jdk1.8win10rocksdb 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)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值