我在我们的一个仪表板系统上有一个很长的数据库查询,我想缓存它,因为结果不需要实时准确,但可以从缓存中提供“足够接近”的值。
我想在用户无需等待的情况下执行此操作。我正在考虑使用类似的东西
Rails.cache.write('my_val', 'val', :expires_in => 60.minutes)
来存储这个值,但我不相信它提供了我想要的确切功能。我想调用
Rails.fetch('my_val') { create a background task to update my_val; return expired my_val}
不过,似乎 my_val 在过期时已从缓存中删除。是否有任何方法可以访问此过期值或可能启用此功能的另一种内置机制?
谢谢。
最佳答案
只需这样做:
Rails.cache.write('my_val', 'val')
永不过期
现在运行你的后台作业:
SomeLongJob.process
在 SomeLongJob.process 作业中执行此操作:
def SomeLongJob.process
some_long_calculation = Blah.calc
Rails.cache.write('my_val', some_long_calculation)
end
现在读取数据
def get_value
val = Rails.cache.read('my_val', 'val')
end
关于ruby-on-rails - Rails 缓存,继续存储过期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8252112/