与 Redis 相比 memcached 算是恐龙吗?

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

Redis 可以用作类固醇的 memcached,因为它的速度和 Memcached,但带有许多 更具特色。 与 memcached 一样,Redis 也支持为键设置超时,因此 这把钥匙会自动 在给定的时间内移除 通行证。

这听起来令人惊讶。我还发现了这个网页的基准: http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison

那么,说实话——与这个名为 Redis 的新手相比,memcache 真的是那个从性能角度来看是一个糟糕的选择的老古董吗?

我没有听到很多关于红迪斯以前,因此我的问题的方法!

74417 次浏览

Memcache 仍然是一个优秀的工具,而且非常可靠。

与其从谁在 < 100 ms 范围内更快的角度来看这个问题,不如看看软件的每个“类”的性能。

  • 它只使用本地内存吗?-> 最快
  • 它是否使用远程内存?-> 快速
  • 它是否使用内存加硬盘-> 哦哼。
  • 它只使用硬盘-> 运行!

说实话 memcache 真的是 老恐龙,这是一个糟糕的选择 从性能的角度来看 相比之下,这个新来的叫 雷迪斯?

  • 比较特征集然后 Redis有更多的方式功能;
  • 比较易于安装的 Redis也容易得多。不需要依赖性;
  • 积极开发的 Redis也比较好;
  • 我相信 memcachedRedis稍微快一点。它根本不接触到光盘;
  • 我的意见是 Redis是比 memcached更好的产品。

Memcached 所做的 Redis 所不做的是最近使用最少的从缓存中删除值。使用 memcached,您可以安全地设置任意多的值,当它们溢出内存时,您最近没有使用的值将被删除。对于 Redis,您只能通过设置所有内存的超时来近似实现这一点; 当它需要释放内存时,它将查看三个随机键并删除最接近过期的键。

这是最主要的区别,如果你只是把它作为一个缓存使用。

你可能还想看看 Membase。

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

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

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

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

  • Membase 使用分布式哈希表方法设置为水平伸缩
  • Membase 可以使用 LRU 方法支持多层数据卸载(很少用到磁盘,很少用到 SSD,经常用到 RAM)
  • 不确定 Membase 的 TTL 能力。

这个选择可能取决于你的应用程序能在多大程度上利用 Redis 的额外数据操纵功能。

取决于你需要什么,总的来说,我认为:

  • 你不应该太在意表演。每个核心的 Redis 速度更快,值更小,但 memcached 能够使用单个可执行文件和 TCP 端口的多个核心,而不需要客户机的帮助。而且 memcached 的速度更快,大小在100k 左右。Redis 最近对大值(不稳定分支)做了很多改进,但是在这个用例中 memcached 仍然更快。这里的要点是: 这两者中的任何一个都不太可能成为您的瓶颈,因为它们可以提供每秒查询。
  • 您应该关心内存使用情况。对于简单的键-值对,memcached 的内存效率更高。如果使用 Redis 散列,Redis 的内存效率更高。取决于用例。
  • 你应该关注持久性和复制,这两个特性只有在 Redis 才有。即使您的目标是构建一个缓存,在升级或重新启动之后,您的数据仍然存在也会有所帮助。
  • 你应该关心你需要什么样的手术。在 Redis,有很多复杂的操作,即使只考虑缓存用例,您通常可以在一个操作中完成更多的操作,而不需要处理客户端的数据(有时需要大量的 I/o)。此操作通常与普通 GET 和 SET 一样快。因此,如果您不仅需要 GET/SET,还需要更复杂的东西,Redis 可以提供很多帮助(考虑时间线缓存)。

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

另外,由于我是 Redis 项目的首席开发人员,我当然会有偏见。

Hazelcast 本机支持 memcached 协议

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

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