什么是每天在rails中缓存值的最佳方法?
我有一个可以通过API访问的数据库调用,我想每天制作和存储它。
这样做的最佳方式/做法是什么?
答案 0 :(得分:4)
我们假设您有一个widget_price
,您只想每24小时更新一次。通常,您使用Widget.calculate_daily_price
来获取每日价格,但运行速度减慢需要很长时间。
widget_price = Widget.calculate_daily_price
使用Rails.cache.fetch包装该调用并在24小时内使结果到期。
widget_price = Rails.cache.fetch('widget_price', expires_in: 24.hours) do
Widget.calculate_daily_price
end
现在,如果widget_price已经缓存,则将使用缓存值,并且将忽略该块。如果缓存在运行时已过期,则将执行该块,并将缓存设置为新值24小时。
答案 1 :(得分:0)
我有另一个解决方案 https://github.com/igorkasyanchuk/rails_cached_method
您只需将代码更改为 Widget.cached.calculate_daily_price
甚至在需要时指定 expires_in: 24.hours