正在寻找与java兼容的轻量级内存键值存储

正在寻找与java兼容的轻量级内存键值存储,java,nosql,berkeley-db,key-value-store,Java,Nosql,Berkeley Db,Key Value Store,伯克利DB可能是最好的选择,但由于许可问题,我不能使用它 还有其他选择吗 你的问题可能意味着两件事之一 如果您指的是用于存储键值对的数据结构,请使用JDK标准部分的实例之一 但是,如果您想要内存中的键值存储,那么我建议您查看甚至。?有轻量级或嵌入式数据库,如HSQLDB、Derby、SQLite 但像其他人一样,他们不明白为什么需要db来存储键/值 为什么不是地图? 需要在应用程序重新启动时保留密钥/值吗 此外,这可能不是您所需要的,但随着html5在最新浏览器上的应用,您拥有本地存储,允许您使

伯克利DB可能是最好的选择,但由于许可问题,我不能使用它


还有其他选择吗

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

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


但是,如果您想要内存中的键值存储,那么我建议您查看甚至。

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

为什么不是地图? 需要在应用程序重新启动时保留密钥/值吗

此外,这可能不是您所需要的,但随着html5在最新浏览器上的应用,您拥有本地存储,允许您使用javascript在浏览器中存储键/值。

非常适合这种情况。它旨在以分页文件的形式存储在磁盘上,提供基本事务支持(不保证隔离,但包含ACD)。我们已经在一个部署相当广泛的生产系统中使用了它,并对其性能、稳定性等非常满意。

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

您可以试试。只需将hazelcast.jar添加到类路径中。然后开始编码

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

你会得到一个内存中的、分布式的、动态可扩展的数据网格,它执行得非常快。

我知道这是一篇两年前的文章,但我最近一直在胡闹,到目前为止我很喜欢它。无论如何,我都不是专家,但对我来说,用几个节点建立分布式缓存并不太困难,我在大约一个小时内就从这些节点中提取了一些数据。

是伯克利的另一种选择,它有一个友好的Apache2许可证

  • 通过java的映射接口提供键值存储
  • 轻量级(300KB jar)
  • 快速和线程安全
  • 如果需要,将更改保存到磁盘
  • 许多其他

我建议您试试。您将能够在高性能key-value server上使用分布式和可扩展的
Map
ConcurrentMap
和其他(设置、列表、队列、锁定…)实现

简单的例子:

Redisson redisson = Redisson.create();

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

...

redisson.shutdown();
Redisson Redisson=Redisson.create(); ConcurrentMap=redisson.getMap(“anyMap”); ... redisson.shutdown(); 是一个很好的选择

  • 纯Java,只需
    Java.util.Map
    实现
  • 存储堆外数据,可以选择通过内存映射文件持久化到磁盘
  • 开源、许可的Apache 2.0许可证
  • 速度惊人,每秒可管理数百万次更新/查询()

它缺乏事务管理,无法将一些数据保存在磁盘中,另一部分保存在内存中等//sarcasmAh,我明白了:)之前有人想为Android开发东西,但需要使用存储支持的hashmap,因为他的数据太大了。我想是类似的。@Stephen C:欢迎您编辑并提供更好的解释。关于“讽刺地回应”:对我来说,伯克利DB的替代品是HashMap.upvoting,这听起来很奇怪——这个问题似乎是合法的,并没有太多的讽刺。既然如此,这个问题可以从一开始就说明hashmaps不会削减它。。。您在下面的评论中所说的“//sarcasam”是什么意思?为什么不检查nosql-database.org-->键值/存储部分,并为您自己找到答案呢。使用IMDG(也是一个),您可以选择scale@cletus:hashmap是否使用内存键值存储?轻量级?mvn copy dependencies为mapdb:3.0.5收集了大约14 MB的数据