如何在rails中每天缓存一个值?

时间:2015-05-07 20:15:31

标签: ruby-on-rails

什么是每天在rails中缓存值的最佳方法?

我有一个可以通过API访问的数据库调用,我想每天制作和存储它。

这样做的最佳方式/做法是什么?

2 个答案:

答案 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