Redis中缓存的最佳expire_in值

时间:2013-01-11 14:58:35

标签: ruby-on-rails caching redis

我想在我的Rails应用程序中使用gem "redis-store"作为缓存存储。与memcached不同,redis不会清除未使用的密钥,但我可以在每个密钥上使用EXPIRE命令(通过:expire_in选项)来限制每个密钥的生命周期。

然后我希望使用我的模型cache_key(包括idupdated_at)作为redis密钥的一部分,用于缓存。因此,当模型将被更新时,将创建新的缓存键,并且永远不会使用旧的缓存键。

所以问题是,选择哪个到期时间?如果设置得太小,它会消除缓存带来的好处,如果时间太长 - 它会用未使用的数据填充redis,这可能(可能)降低性能。黄金在哪里?

2 个答案:

答案 0 :(得分:1)

我建议使用Redis的LRU到期策略让Redis使最近最少使用的密钥本身到期。这样,您无需担心密钥过期。

如您所建议的那样,使用模型的cache_key确实会在模型更改时生成新密钥。该模型的“旧”键将不再被您的视图使用,Redis最终将使它们到期。

有关如何将Redis配置为LRU存储的信息,请参阅http://redis.io/topics/config

答案 1 :(得分:0)

肯定这是应用程序依赖?如果它是一个非常昂贵的页面,你希望它尽可能少地重新计算,但如果它快速变化,你就没有选择。

我亲自试验。选择一些数字,看看它们如何影响性能。错误开始(信任您的数据库,在本例中为Redis),然后在遇到问题时调整它们。