Rails和缓存,在memcache和redis之间切换是否容易?

时间:2010-11-19 03:03:10

标签: ruby-on-rails caching memcached redis

是否有一个共同的api,如果我在Redis或Memcached之间切换,我不需要更改我的代码,只需配置设置?

3 个答案:

答案 0 :(得分:42)

只要您没有自己初始化Memcached客户端但依赖Rails.cache通用API,从Memcached切换到Redis只需要安装redis-store并更改配置

config.cache_store = :memcached_store

config.cache_store = :redis_store

更多info about Rails.cache

答案 1 :(得分:38)

我讨厌弄乱你的目标,但我建议不要在memcached上使用redis进行通用的rails缓存。

我在一个大型rails应用程序中广泛使用redis和resque,我认为将缓存,原始redis和resque合并为一个很好。我遇到了一些重大问题:

  1. 首先,它变慢了。它可能完全是我的特定用途,redis-store库或redis本身。我不打算讨厌任何东西,你的里程可能会有所不同,但是当memcached“正常工作”时,很多时候会把很多时间转换成redis。
  2. Memcached很不错,因为添加服务器并使用一致性哈希来实现目标非常容易。 Redis也有这个,但根据我的经验,很难同时将redis视为我的应用程序某些部分的单片数据存储区,而其他部分则将其视为分布式,持续散列的缓存存储块。
  3. 祝你的项目好运。我喜欢redis和memcached并在我的所有项目中使用它们,但是我让一个人做它作为kick-ass数据结构服务器的工作,让另一个人在缓存中踢它。

答案 2 :(得分:2)

Redis的整洁部分包括缓存“基于列表”的东西 - 在应用程序中发生事件时从这个列表中推送/弹出内容。

不是从memcached反序列化大值,编辑它,而是重新序列化它。

这将在自定义过滤器中的ruby代码中完成,而不是基本的rails缓存。