在过去的几周里,我在memcached上做了很多工作,刚刚发现了Redis.当我读到他们自述的这一部分时,我突然感到内心温暖舒适的感觉:
Redis可以用作类固醇的memcached,因为它与memcached一样快,但具有更多的功能.与memcached一样,Redis也支持为键设置超时,以便在给定时间过后自动删除此键.
听起来很神奇.我还发现这个页面有基准:http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison
所以,老实说 - 与这个名为Redis的新人相比,从性能角度来看,memcache真的是那个古老的dinousaur吗?
我以前没有听过很多关于Redis的信息,因此我的问题就是解决方法!
我通过简单的Rails.cache界面在我的Rails 3应用程序中使用memcached进行缓存,现在我想用redis和resque做一些后台作业处理.
我认为它们的不同足以保证同时使用它们.但是在heroku上,使用memcached和redis都有单独的费用.使用两者是否有意义,或者我应该迁移到只使用redis?
我喜欢使用memcached进行缓存,因为最近最少使用的密钥会自动从缓存中推出,而我不需要缓存数据.Redis对我来说几乎是新手,但我知道默认情况下它是持久的,并且密钥不会自动从缓存中过期.
编辑:只是想更清楚我的问题.我知道只使用Redis而不是两者都是可行的.我想我只是想知道这样做有什么特别的缺点吗?考虑到实现和基础设施,我不应该只使用Redis吗?(即,对于简单的缓存,memcached更快?)我没有找到任何确定的方法.
我目前使用Redis作为Sidekiq的工作队列.我也有兴趣将它用作Rails.cache的缓存机制.
推荐的Rails缓存机制永远不会使项目过期,并依赖于驱逐最近最少使用(LRU)的项目.不幸的是,默认情况下,Redis不配置为驱逐最近最少使用的项目,而推荐的缓存存储是memcached.
此外,驱逐项目不是我想要的工作队列行为,并且配置相同的Redis实例来执行此操作可能会导致不良结果.我也不希望我的队列与我的缓存共享周期.
在这种情况下你会推荐什么?第二个redis存储充当缓存并配置了LRU?或者只使用rails推荐的memcached缓存存储并且仅使用redis作为队列?
我倾向于使用Redis和Memcached,尽管有大量的堆栈溢出文章推荐否则.memcached默认支持LRU驱逐是赢得我的.
一些文章:
在评论中隐藏得更深,海报提到memcached的LRU驱逐是将其用作缓存的一个很好的理由.