【发布时间】:2014-10-13 09:47:40
【问题描述】:
我正在寻找一个嵌入的键值数据存储
- 有 Java API
- 易于操作的计数器(又名 SET value=value+10 WHERE key="k")
- 支持多线程客户端
- 高性能
我找到了LevelDBJni,但它是为简单的K-V操作而设计的,对计数器不友好。有没有更好的解决方案?
谢谢。
【问题讨论】:
标签: java embedded-database key-value-store
我正在寻找一个嵌入的键值数据存储
我找到了LevelDBJni,但它是为简单的K-V操作而设计的,对计数器不友好。有没有更好的解决方案?
谢谢。
【问题讨论】:
标签: java embedded-database key-value-store
借助 Java 库,您可以使用 Map 和 AtomicInteger 作为值。
在以下示例中,我使用 String 作为键的数据类型。
例如
Map<String, AtomicInteger> kvStore = new ...
要操作计数器,您可以使用
kvStore.get("...").addAndGet(10);
同时检索更新的值
AtomicInteger value = kvStore.get("...").addAndGet(10);
由于AtomicInteger 是为并发设计的,所以多线程环境应该没问题。
我不能告诉你它的性能如何,因为我不知道你的具体要求,所以你必须自己确定。
【讨论】:
嵌入式 Java DB count-db (https://github.com/koendeschacht/count-db) 在其 API 中提供了一个 increaseCount 方法,应该可以解决这个用例。
【讨论】:
看看http://www.mapdb.org。它的性能非常高,并提供了非常熟悉的 API(Java Map)。
【讨论】: