与Redis相比,memcached是恐龙吗?

时间:2010-05-20 11:35:18

标签: performance memcached redis

过去几周我在memcached上做了很多工作,刚刚发现了Redis。当我读到他们自述的这一部分时,我的肚子里突然感到一种温暖,舒适的感觉:

  

Redis可以用作类固醇的memcached因为速度快   memcached但有很多   功能更多。   与memcached一样,Redis也支持为键设置超时   该密钥将自动生效   在给定的时间内删除   通行证。

这听起来很神奇。我还发现这个页面有基准:http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison

所以,老实说 - 与这个名为Redis的新人相比,memcache真的是那种老式的dinousaur从表现的角度来看是一个糟糕的选择吗?

我之前没有听过很多关于Redis的信息,因此我的方法就是我的问题!

6 个答案:

答案 0 :(得分:200)

取决于您的需求,一般来说我认为:

  • 你不应该太在乎表演。 Redis每个核心的速度更快,值很小,但是memcached能够在没有客户端帮助的情况下将多个核心与单个可执行文件和TCP端口一起使用。 memcached也更快,大值为100k。 Redis最近对大值(不稳定分支)进行了很多改进,但在这个用例中memcached仍然更快。这里的要点是:一个或另一个可能不会成为他们可以提供的每秒查询的瓶颈。
  • 您应该关心内存使用情况。对于简单的键值对,memcached的内存效率更高。如果使用Redis哈希,Redis的内存效率更高。取决于用例。
  • 您应该关心持久性和复制,这两个功能仅在Redis中可用。即使您的目标是构建缓存,也可以帮助您在升级或重新启动后仍然存在数据。
  • 你应该关心你需要的那种操作。在Redis中有许多复杂的操作,即使只考虑缓存用例,您通常可以在单个操作中执行更多操作,而无需在客户端处理数据(有时需要大量I / O)。此操作通常与普通GET和SET一样快。因此,如果你不需要GET / SET,但更复杂的事情,Redis可以提供很多帮助(想想时间线缓存)。

如果没有用例,现在很难选择,但我认为对于很多事情来说Redis是有道理的,因为即使你不想将它作为数据库使用,你的能力也会更强可以解决更多问题,不仅仅是缓存,甚至是消息传递,排名等等。

P.S。当然,因为我是Redis项目的首席开发人员,所以我可能会有偏见。

答案 1 :(得分:81)

  

老实说 - 真的是memcache   老dinousaur是一个糟糕的选择   从表现的角度来看   相比这个新人叫   Redis的?

  • 比较功能集,然后Redis具有更多功能;
  • 比较安装的简易性Redis也更容易。不需要依赖项;
  • 比较有效的开发Redis也更好;
  • 我相信memcachedRedis快一点。它根本不接触光盘;
  • 我的观点是Redis是比memcached更好的产品。

答案 2 :(得分:73)

Memcache仍然是一款非常出色且非常可靠的工具。

而不是从一个角度来看这个问题,而不是在< 100 ms范围,查看软件的每个“类”的性能。

  • 它只使用本地ram吗? - >最快
  • 是否使用远程ram? - >快
  • 是否使用ram plus hardddisk - >哦,嗯。
  • 它是否仅使用硬盘 - &gt;运行<!/ LI>

答案 3 :(得分:46)

Redis没有做的memcached是最近最少使用的从缓存中逐出的值。使用memcached,您可以安全地设置任意数量的值,当它们溢出内存时,最近未使用的值将被删除。使用Redis,您只能通过设置所有内容的超时来近似此值;当它需要释放内存时,它将查看三个随机键并删除最接近过期的键。

如果您只是将其用作缓存,则主要区别在于。

答案 4 :(得分:12)

您可能还想看看Membase。

http://www.northscale.com/products/membase_server.html

我没有使用它,但它似乎与Redis类似,因为它是一个以内存为中心的KV存储,具有持久性。与我所看到的主要区别是:

  • Redis具有更多的数据处理能力(有序集等)
  • Redis有一个待定的Redis Cluster项目,用于添加水平可伸缩性
  • Redis基于混合算法将单层数据卸载到磁盘(VM),该算法同时考虑LRU和对象的大小。

  • Membase使用memcached有线协议 - 可用作现有应用程序的升级路径

  • Membase设置为使用分布式哈希表方法水平扩展
  • Membase可以使用LRU方法支持多层数据卸载(非常少用于磁盘,很少有东西用于SSD,频繁的东西留在RAM中)
  • 不确定Membase中的TTL功能。

选择可能取决于您的应用程序在Redis中利用额外数据操作功能的程度。

答案 5 :(得分:0)

Hazelcast原生支持memcached协议

https://web.archive.org/web/20140601010929/http://hazelcast.org/docs/latest/manual/html-single/hazelcast-documentation.html

因此是memcached的现代替代品。您应该尝试所有解决方案,看看什么最适合您。