我们正在使用带有Redis服务器的Ruby web应用程序进行缓存。是否需要测试Memcached?
什么能给我们更好的表现?Redis和Memcached有什么优缺点吗?
需要考虑的要点:
读/写速度。内存使用情况。磁盘I/O转储。缩放比例。
我们正在使用带有Redis服务器的Ruby web应用程序进行缓存。是否需要测试Memcached?
什么能给我们更好的表现?Redis和Memcached有什么优缺点吗?
需要考虑的要点:
读/写速度。内存使用情况。磁盘I/O转储。缩放比例。
当前回答
这里没有指出的一个主要区别是Memcache始终有内存上限,而Redis在默认情况下没有(但可以配置为)。如果您总是希望在一定时间内存储一个键/值(并且永远不会因为内存不足而将其逐出),那么您需要使用Redis。当然,你也有内存不足的风险。。。
其他回答
Memcached是多线程和快速的。
Redis有很多功能,而且速度非常快,但完全限于一个内核,因为它基于一个事件循环。
我们两者都使用。Memcached用于缓存对象,主要减少数据库的读取负载。Redis用于诸如排序集之类的东西,这对于汇总时间序列数据非常方便。
测验运行一些简单的基准测试。很长一段时间以来,我认为自己是一只老派犀牛,因为我主要使用memcached,并认为Redis是一个新孩子。
在我目前的公司中,Redis被用作主缓存。当我深入研究了一些性能统计数据并简单地开始测试时,Redis在性能方面与MySQL相当,或者说比MySQL慢得最少。
Memcached虽然过于简单,却让Redis彻底破产。它的规模更大:
对于较大的值(需要改变楼板尺寸,但已完成)对于多个并发请求
此外,在我看来,memcached驱逐策略实现得更好,从而在处理比缓存所能处理的数据更多的数据时,总体上平均响应时间更稳定。
一些基准测试表明,在我们的情况下,Redis的表现非常糟糕。我认为这与许多变量有关:
运行Redis的硬件类型存储的数据类型获取和设置的数量应用程序的并发性你需要数据结构存储吗
就我个人而言,我不同意Redis作者对并发和多线程的看法。
如果你对性能感兴趣,Memcached会更快,甚至因为Redis涉及网络(TCP调用)。内部Memcache也更快。
正如其他答案所提到的那样,Redis有更多的功能。
如果我们说redis是(缓存+数据结构)的组合,而memcached只是一个缓存,那就不会错。
这里没有指出的一个主要区别是Memcache始终有内存上限,而Redis在默认情况下没有(但可以配置为)。如果您总是希望在一定时间内存储一个键/值(并且永远不会因为内存不足而将其逐出),那么您需要使用Redis。当然,你也有内存不足的风险。。。