我们正在使用带有Redis服务器的Ruby web应用程序进行缓存。是否需要测试Memcached?
什么能给我们更好的表现?Redis和Memcached有什么优缺点吗?
需要考虑的要点:
读/写速度。内存使用情况。磁盘I/O转储。缩放比例。
我们正在使用带有Redis服务器的Ruby web应用程序进行缓存。是否需要测试Memcached?
什么能给我们更好的表现?Redis和Memcached有什么优缺点吗?
需要考虑的要点:
读/写速度。内存使用情况。磁盘I/O转储。缩放比例。
当前回答
Memcached擅长作为一个简单的键/值存储,并且擅长执行key=>STRING。这使得它非常适合会话存储。
Redis擅长做key=>SOME_OOBJECT。
这真的取决于你要放什么。我的理解是,就性能而言,他们相当均衡。
如果你确实找到了一些客观的基准,也祝你好运。
其他回答
在以下情况下使用Redis
您需要有选择地删除/过期缓存中的项目。(你需要这个)您需要能够查询特定类型的键。等式“blog1:帖子:*”,“blog2:类别:xyz:帖子:”。哦,是的!这是非常重要的。使用此选项可以选择性地使某些类型的缓存项无效。您还可以使用它使片段缓存、页面缓存、仅给定类型的AR对象等无效。持久性(你也需要这个,除非你对缓存在每次重启后都要预热感到满意。这对于很少改变的对象来说非常重要)
在以下情况下使用memcached
Memcached让你头疼!嗯。。。集群?无聊的。如果你想做到这一点,请使用Varnish和Redis缓存片段和AR对象。
根据我的经验,Redis的稳定性比Memcached要好得多
另一个好处是,memcache在缓存场景中的行为非常清楚,而redis通常用作持久数据存储,尽管它可以被配置为在达到最大容量时像memcached一样,即驱逐最近最少使用的项目。
我研究过的一些应用程序同时使用这两种方法,只是为了明确数据的行为方式-内存缓存中的数据,我们编写代码来处理数据不存在的情况-redis中的数据。
除此之外,Redis通常被视为优势,因为它的功能更丰富,因此更灵活。
Memcached是多线程和快速的。
Redis有很多功能,而且速度非常快,但完全限于一个内核,因为它基于一个事件循环。
我们两者都使用。Memcached用于缓存对象,主要减少数据库的读取负载。Redis用于诸如排序集之类的东西,这对于汇总时间序列数据非常方便。
我有机会在我所研究的缓存代理中同时使用memcached和redis,让我向您分享我使用了什么以及背后的原因。。。。
Redis>
1) 用于在集群上索引缓存内容。我在redis集群上有超过十亿个密钥,redis响应时间非常短且稳定。
2) 基本上,它是一个键/值存储,所以无论在应用程序中有什么类似的东西,都可以使用redis而不必太麻烦。
3) Redis持久性、故障切换和备份(AOF)将使您的工作更轻松。
内存缓存>
1) 是的,可以用作缓存的优化内存。我使用它来存储缓存内容,这些内容经常被访问(每秒50次),大小小于1MB。
2) 当我的单个内容大小>1MB时,我也只为memcached分配了16GB中的2GB。
3) 随着内容增长接近极限,我偶尔会在统计数据中观察到较高的响应时间(redis的情况并非如此)。
如果你要求整体体验,Redis是绿色的,因为它易于配置,非常灵活,具有稳定的健壮功能。
此外,在这个链接上有一个可用的基准测试结果,下面是来自同一链接的几个亮点,
希望这有帮助!!
Redis更好。
Redis的优点是,
它有很多数据存储选项,如字符串、集合、排序集合、哈希、位图记录的磁盘持久性存储过程(LUA脚本)支持可以使用PUB/SUB充当消息代理
而Memcache是内存中的键值缓存类型系统。
不支持各种数据类型存储,如列表、集合再贴现。主要缺点是Memcache没有磁盘持久性。