4

我需要一个键值存储的推荐。这是我的标准:

  1. 不必持久,但需要支持大量记录(记录很小,100-1000 字节)
  2. 插入(put)只会偶尔发生,总是在大型数据集中(批量)
  3. Get将是随机的,需要快速
  4. 客户端将使用 Ruby,也许还有 Java
  5. 它应该相对容易设置并且需要尽可能少的维护
4

4 回答 4

6

Redis听起来很适合在这里使用。它都在内存中,所以速度非常快(GETSET操作都是 O(1))并且它同时支持RubyJava客户端。

于 2011-06-08T13:59:13.140 回答
5

Aerospike将是完美的,原因如下:

  1. 基于 Java 和 Ruby 中可用客户端的键值。
  2. 吞吐量:优于 Redis/Mongo/Couchbase 或任何其他 NoSQL 解决方案。请参阅此http://www.aerospike.com/blog/use-1-aerospike-server-not-12-redis-shards/。亲眼看到它在超过 300k 读取 TPS 和 100k 写入 TPS 的情况下运行良好。
  3. 使用 RIPEMD160 自动高效地进行数据分片、数据重新平衡和数据分发。
  4. 发生故障转移和/或网络分区时的高可用性系统。
  5. 从 3.0 版本开源。
  6. 可以在没有持久性的缓存模式下使用。
  7. 支持 LRU 和 TTL。
  8. 很少或没有维护。
于 2015-05-07T09:31:18.073 回答
0

AVL-Tree 将在插入、删除、搜索和大多数其他方面为您提供 O(log n)。

于 2011-06-08T13:55:51.830 回答
0

1 和 3 都在尖叫数据库引擎。

如果您的记录数量不是很疯狂,并且您只有一个客户端同时使用这个东西,我个人会推荐 sqlite,它适用于 Java 和 Ruby(也将通过 #5)。否则,请使用真正的数据库系统,例如 MySql(因为您不在 Microsoft 堆栈中)。

于 2011-06-08T13:56:36.003 回答