我想在我的Rails应用程序中使用gem "redis-store"
作为缓存存储。与memcached不同,redis不会清除未使用的密钥,但我可以在每个密钥上使用EXPIRE
命令(通过:expire_in
选项)来限制每个密钥的生命周期。
然后我希望使用我的模型cache_key
(包括id
和updated_at
)作为redis密钥的一部分,用于缓存。因此,当模型将被更新时,将创建新的缓存键,并且永远不会使用旧的缓存键。
所以问题是,选择哪个到期时间?如果设置得太小,它会消除缓存带来的好处,如果时间太长 - 它会用未使用的数据填充redis,这可能(可能)降低性能。黄金在哪里?
答案 0 :(得分:1)
我建议使用Redis的LRU到期策略让Redis使最近最少使用的密钥本身到期。这样,您无需担心密钥过期。
如您所建议的那样,使用模型的cache_key确实会在模型更改时生成新密钥。该模型的“旧”键将不再被您的视图使用,Redis最终将使它们到期。
有关如何将Redis配置为LRU存储的信息,请参阅http://redis.io/topics/config。
答案 1 :(得分:0)
肯定这是应用程序依赖?如果它是一个非常昂贵的页面,你希望它尽可能少地重新计算,但如果它快速变化,你就没有选择。
我亲自试验。选择一些数字,看看它们如何影响性能。错误开始(信任您的数据库,在本例中为Redis),然后在遇到问题时调整它们。