Redis可以完成Memcached提供的所有内容(LRU缓存,项目到期,现在在版本3.x +中进行集群,目前处于测试阶段)或者使用twemproxy等工具.性能也类似.更重要的是,Redis增加了持久性,因此在服务器重启时您不需要进行缓存加温.
参考比较Redis和Memcache的一些旧答案,其中一些支持Redis作为Memcache的替代(如果已经存在于堆栈中):
尽管如此,在研究Instagram,Pinterest,Twitter等大型网络规模公司的堆栈时,我发现他们将Memcached和Redis用于不同目的,而不是使用Redis进行主要缓存.主缓存仍然是Memcached,Redis用于基于数据结构的逻辑缓存.
截至2014年,为什么memcached仍然值得将其作为附加组件添加到堆栈中,当你已经有一个可以完成memcached可以做的所有事情的Redis组件时?除了现有的Redis之外,建筑师/工程师还有哪些优点还包括memcached?
对于我们的平台,我们已经完全丢弃了Memcached,并将redis用于简单和逻辑缓存要求.高性能,灵活可靠.
一些示例场景:
是否有一个共同的api,如果我在Redis或Memcached之间切换,我不需要更改我的代码,只需配置设置?
我目前使用Redis作为Sidekiq的工作队列.我也有兴趣将它用作Rails.cache的缓存机制.
推荐的Rails缓存机制永远不会使项目过期,并依赖于驱逐最近最少使用(LRU)的项目.不幸的是,默认情况下,Redis不配置为驱逐最近最少使用的项目,而推荐的缓存存储是memcached.
此外,驱逐项目不是我想要的工作队列行为,并且配置相同的Redis实例来执行此操作可能会导致不良结果.我也不希望我的队列与我的缓存共享周期.
在这种情况下你会推荐什么?第二个redis存储充当缓存并配置了LRU?或者只使用rails推荐的memcached缓存存储并且仅使用redis作为队列?
我倾向于使用Redis和Memcached,尽管有大量的堆栈溢出文章推荐否则.memcached默认支持LRU驱逐是赢得我的.
一些文章:
在评论中隐藏得更深,海报提到memcached的LRU驱逐是将其用作缓存的一个很好的理由.
在我的应用程序中,在主页操作中,我调用返回JSON的特定Web服务.
parsed = JSON.parse(open("http://myservice").read)
@history = parsed['DATA']
Run Code Online (Sandbox Code Playgroud)
这个数据每60秒不会改变一次以上,并且不会在每个访问者的基础上改变,所以我希望,理想情况下,缓存@history变量本身(因为解析不会产生新的结果)并自动使其无效如果它超过一分钟.
我不确定这样做的最好方法.默认的Rails缓存方法似乎都更倾向于需要手动过期的内容.我确信有一种快速简便的方法可以做到这一点,我只是不知道它是什么!