16

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

有没有其他选择?

4

10 回答 10

8

You can try Hazelcast. Just add hazelcast.jar to your classpath. And start coding

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

You'll get an in-memory, distributed, dynamically scalable data grid which performs super fast.

于 2010-08-13T11:08:17.690 回答
3

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

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

但是,如果您正在使用内存中的键值存储,那么我建议您查看EHCache甚至memcached

于 2010-04-04T14:23:56.483 回答
2

哈希表

于 2010-04-04T14:24:07.823 回答
2

Chronicle-Map是一个强有力的选择。

  • 纯Java,简单java.util.Map实现
  • 将数据存储在堆外,可选择通过内存映射文件保存到磁盘
  • 开源、宽松的 Apache 2.0 许可证
  • 速度极快,每秒可管理数百万次更新/查询(查看确切数字
于 2014-12-06T08:38:49.723 回答
1

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

于 2010-04-06T23:21:31.613 回答
1

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

于 2010-04-05T05:13:08.883 回答
1

我知道这是一个两年前的帖子,但我最近一直在玩 Infinispan,到目前为止我很喜欢它。无论如何我都不是专家,但对我来说用几个节点设置分布式缓存并不难,我在大约一个小时内就从它们中提取了一些数据。

于 2012-05-02T04:17:12.663 回答
1

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

  • 通过 java 的 Map 接口提供键值存储
  • 轻量级(300KB jar)
  • 快速且线程安全
  • 如果您愿意,可以保留对磁盘的更改
  • 许多其他功能
于 2013-08-11T10:54:46.717 回答
0

我建议尝试Redisson。您将能够在高性能键值Redis服务器之上使用分布式和可扩展的Map或其他(Set、List、Queue、Lock ...)实现。ConcurrentMap

简单的例子:

Redisson redisson = Redisson.create();

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

...

redisson.shutdown();
于 2014-01-12T10:44:13.877 回答
0

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

为什么不是地图?需要在应用重启时保留键/值?

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

于 2010-04-04T15:07:26.777 回答