【发布时间】:2015-03-26 21:30:38
【问题描述】:
我想将我的对象保留在 Rails 缓存中,只要在某个时间间隔内(比如 10 分钟)有读取。我可以通过以下方式成功设置缓存对象创建的 TTL:
Rails.cache.fetch('key', expires_in: 10.minutes) do
some_expensive_operation
end
但我注意到后续对“key”的缓存读取不会增加 TTL(至少在我的设置中没有,即 Rails 3.2 + Redis)。
有没有办法让Rails.cache.{fetch,read} 重新设置缓存命中的 TTL?
我的替代方法是执行以下操作,这似乎很浪费:
result = Rails.cache.read('key') || some_expensive_operation
Rails.cache.write('key', result, expires_in: 10.minutes)
【问题讨论】: