NoSQL替代memcache

时间:2013-10-25 01:47:47

标签: caching nosql redis memcached couchdb

我们遇到的情况是,我们存储在memcache上的值大于1MB。

不可能使这些值变小,即使有办法,我们需要将它们保存到磁盘。

一种解决方案是重新编译memcache服务器以允许说2MB值,但这不是干净的也不是完整的解决方案(同样,我们需要保留值)。

好消息是

  1. 我们可以非常准确地预测出我们将拥有多少个键/值
  2. 我们还可以预测我们需要的总大小。
  3. 我们的一个关键功能是记忆缓存的速度。

    所以问题是:是否有任何noSQL替代memcache,这将允许我们有超过1MB的值并将它们存储在磁盘而不会失去速度?

    过去我曾使用过tokyotyrant / cabinet但现在似乎已被弃用了。

    有什么想法吗?

5 个答案:

答案 0 :(得分:3)

我会用redis。

Redis解决了您列出的问题,supports密钥最高可达512Mb,值最高可达2Gb。

在给定频率,1s,5s等的情况下,您可以使用AOF快照将数据保存到光盘,尽管在大多数情况下RDB persistence提供的性能优于AOF。

我们使用redis来缓存json文档。我们已经了解到,为了获得最佳性能,请在物理硬件上部署redis,如果可以的话;虚拟机会极大地影响redis network性能。

答案 1 :(得分:2)

您还拥有与Memcache API兼容的Couchbase,并允许您仅将数据存储在Memcache或持久群集中。

答案 2 :(得分:1)

如果数据的总数不会超过物理内存的大小,则Redis很好。如果您的数据总量太大而无法满足内存,则需要在不同的服务器上安装更多Redis实例。

或者您可以尝试SSDB(https://github.com/ideawu/ssdb),它会自动将冷数据迁移到磁盘中,因此您将通过SSDB获得更多存储容量。

答案 3 :(得分:0)

任何键/值存储都会这样做。请参阅此列表,例如:http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores

另外看一下MongoDB - 持久性对你来说似乎不是一个问题,而且这基本上是Mongo很糟糕的地方,所以你可以获得快速的文档数据库(类似于类固醇的键/值存储),索引为自由。至少在你变得太大之前。

答案 4 :(得分:0)

我会使用couchbase,它可以支持最多20mb的文档,可以运行一个存储桶作为memcache或couchbase协议,后者提供持久性。

在此处查看密钥/元数据的其他限制:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-server-limits.html

介绍mongodb / cassandra和couchbase如何在吞吐量/操作上叠加一秒钟。 http://www.slideshare.net/renatko/couchbase-performance-benchmarking

我在生产中使用了redis和couchbase,因为对于基于协议构建的nosql数据库而言,它很难与memcache取代。