我们正在使用带有Redis服务器的Ruby web应用程序进行缓存。是否需要测试Memcached?
什么能给我们更好的表现?Redis和Memcached有什么优缺点吗?
需要考虑的要点:
读/写速度。内存使用情况。磁盘I/O转储。缩放比例。
我们正在使用带有Redis服务器的Ruby web应用程序进行缓存。是否需要测试Memcached?
什么能给我们更好的表现?Redis和Memcached有什么优缺点吗?
需要考虑的要点:
读/写速度。内存使用情况。磁盘I/O转储。缩放比例。
当前回答
Memcached是多线程和快速的。
Redis有很多功能,而且速度非常快,但完全限于一个内核,因为它基于一个事件循环。
我们两者都使用。Memcached用于缓存对象,主要减少数据库的读取负载。Redis用于诸如排序集之类的东西,这对于汇总时间序列数据非常方便。
其他回答
剩下的最大原因是专业化。
Redis可以做很多不同的事情,其中一个副作用是开发人员可能会在同一个实例上使用很多不同的功能集。如果您将Redis的LRU功能用于非LRU的缓存,则完全有可能耗尽内存。
如果您打算设置一个专用的Redis实例,仅作为LRU实例使用,以避免出现这种情况,那么在Memcached上使用Redis并没有什么令人信服的理由。
如果您需要可靠的“永不停机”LRU缓存。。。Memcached将符合这一要求,因为它不可能在设计上耗尽内存,而且专用功能阻止开发人员尝试将其制作成可能危及内存的东西。简单的关注点分离。
我有机会在我所研究的缓存代理中同时使用memcached和redis,让我向您分享我使用了什么以及背后的原因。。。。
Redis>
1) 用于在集群上索引缓存内容。我在redis集群上有超过十亿个密钥,redis响应时间非常短且稳定。
2) 基本上,它是一个键/值存储,所以无论在应用程序中有什么类似的东西,都可以使用redis而不必太麻烦。
3) Redis持久性、故障切换和备份(AOF)将使您的工作更轻松。
内存缓存>
1) 是的,可以用作缓存的优化内存。我使用它来存储缓存内容,这些内容经常被访问(每秒50次),大小小于1MB。
2) 当我的单个内容大小>1MB时,我也只为memcached分配了16GB中的2GB。
3) 随着内容增长接近极限,我偶尔会在统计数据中观察到较高的响应时间(redis的情况并非如此)。
如果你要求整体体验,Redis是绿色的,因为它易于配置,非常灵活,具有稳定的健壮功能。
此外,在这个链接上有一个可用的基准测试结果,下面是来自同一链接的几个亮点,
希望这有帮助!!
Memcached擅长作为一个简单的键/值存储,并且擅长执行key=>STRING。这使得它非常适合会话存储。
Redis擅长做key=>SOME_OOBJECT。
这真的取决于你要放什么。我的理解是,就性能而言,他们相当均衡。
如果你确实找到了一些客观的基准,也祝你好运。
Redis更好。
Redis的优点是,
它有很多数据存储选项,如字符串、集合、排序集合、哈希、位图记录的磁盘持久性存储过程(LUA脚本)支持可以使用PUB/SUB充当消息代理
而Memcache是内存中的键值缓存类型系统。
不支持各种数据类型存储,如列表、集合再贴现。主要缺点是Memcache没有磁盘持久性。
如果你对性能感兴趣,Memcached会更快,甚至因为Redis涉及网络(TCP调用)。内部Memcache也更快。
正如其他答案所提到的那样,Redis有更多的功能。