寻找一个轻量级的java兼容的内存键值存储

时间:2010-04-04 14:22:41

标签: java nosql berkeley-db key-value-store

Berkeley DB可能是最好的选择,但由于许可问题我无法使用它。

还有其他选择吗?

10 个答案:

答案 0 :(得分:7)

您可以尝试Hazelcast。只需将hazelcast.jar添加到您的类路径中即可。并开始编码

java.util.Map map = Hazelcast.getMap("myMap");

您将获得一个内存分布式,动态可扩展的数据网格,可以超级快速地执行。

答案 1 :(得分:3)

你的问题可能意味着两件事之一。

如果您指的是用于存储键值对的数据结构,请使用作为JDK标准部分的Map个实例之一。

如果你是在追踪内存中的键值存储,那么我建议您查看EHCache甚至是memcached

答案 2 :(得分:2)

HashMap

答案 3 :(得分:2)

Chronicle-Map是一个很好的选择。

  • 纯Java,只是java.util.Map实施
  • 将数据存储在堆外,可选择通过内存映射文件保存到磁盘
  • 开源,允许的Apache 2.0许可证
  • 速度极快,可以每秒管理数百万次更新/查询(see exact numbers

答案 4 :(得分:1)

jdbm非常适合这类事情。它用于在分页文件中存储在磁盘上,提供基本的事务支持(不保证隔离,但涵盖了ACD)。我们在部署相当广泛的生产系统中使用它,并且对性能,稳定性等非常满意......

答案 5 :(得分:1)

考虑使用jredis。它是Redis的Java客户端,Redis是一个持久的键值存储。还有一个JDBC驱动程序:code.google.com/p/jdbc-redis /.

答案 6 :(得分:1)

我知道这是一篇已有两年历史的帖子,但最近我一直在和Infinispan搞混,我到目前为止还喜欢它。我不是一个专家,但是对我来说设置一个带有几个节点的分布式缓存并不困难,而且我在大约一个小时内从它们中提取了一些数据。

答案 7 :(得分:1)

MapDb是Berkley的替代品,具有友好的Apache 2许可证。

  • 通过java的Map接口提供键值存储
  • 轻量级(300KB罐子)
  • 快速和线程安全
  • 如果您想要
  • ,请保留对磁盘的更改
  • 许多其他features

答案 8 :(得分:0)

有轻量级或嵌入式dbs,如HSQLDB,Derby,SQLite 但是像其他人一样,不明白为什么需要db来存储键/值......

为什么不是地图? 需要在重启时保持键/值吗?

也可能不是你需要的,但是在最新的浏览器上使用html5你可以使用localStorage,它允许你使用javascript在浏览器中存储键/值。

答案 9 :(得分:0)

我建议尝试Redisson。您将能够在高性能键值Redis服务器之上使用分布式和可伸缩的MapConcurrentMap以及其他(Set,List,Queue,Lock ...)实现。< / p>

简单的例子:

Redisson redisson = Redisson.create();

ConcurrentMap<String, SomeObject> map = redisson.getMap("anyMap");

...

redisson.shutdown();