使用redis更改模型以缓存平均评级

时间:2016-12-16 13:24:09

标签: ruby-on-rails caching redis

在我的rails应用程序中,我有一个产品型号,我有以下方法:

def average_rating
        comments.average(:rating).to_f
end

计算用户对产品的平均评分。

如何让Redis缓存平均评分?

非常感谢提前

1 个答案:

答案 0 :(得分:0)

在模型中

def average_rating
   Rails.cache.fetch("#{cache_key}/#{__method__}", expires_in: 1.hour) do
       comments.average(:rating).to_f
   end
end

在application.rb

config.cache_store = :readthis_store, { expires_in: 1.hour.to_i, namespace: 'foobar', redis: { host: config.redis_host, port: 6379, db: 0 }, driver: :hiredis }

在Gemfile中

gem 'redis'
gem 'readthis'
gem 'hiredis'
gem 'redis-browser'

readthis - 这是为了在redis down时不崩溃。

hiredis - 加快速度

redis-browser - 查看真正缓存的内容。

希望这有帮助!