Redis缓存在视图中无法正常工作

时间:2017-06-22 09:18:01

标签: ruby-on-rails ruby caching redis

对于缓存,我使用redis

gem 'redis'
gem 'redis-namespace'
gem 'redis-rails'
gem 'redis-rack-cache'

在视图中使用缓存来处理html代码

当我使用密钥设置缓存时,它可以工作。但当我得到它没有整合甚至价值存在

def cache(cache_name)
  value = $redis.get(cache_name)
  if value.nil?
    $redis.set(cache_name,yield,ex:5.minutes)
  else
    value
  end
end

在视图中

<% cache("key") do %>
   <h1>Header</h1>
<%end%>

问题是第一次出现标题,但接下来它没有显示存在的值

1 个答案:

答案 0 :(得分:1)

尝试以下

def cache(cache_name)
  Rails.cache.fetch(cache_name, expires_in: 5.minutes){ yield }
end

<强>更新

Rails已经提供了一个缓存片段的帮助器,它与自定义助手的名称相同,所以只需更改方法的名称

def set_cache(cache_name)
  Rails.cache.fetch(cache_name, expires_in: 5.minutes){ yield }
end

你看法保持不变..