Ruby on rails Redis缓存在视图中工作不正常
对于缓存,我使用redisRuby on rails Redis缓存在视图中工作不正常,ruby-on-rails,ruby,caching,redis,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,e
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%>
标题
问题是第一次显示标题,但下一次不显示偶数值,请尝试以下操作
def cache(cache_name)
value = $redis.get(cache_name)
if value.nil?
$redis.set(cache_name,yield,ex:5.minutes)
else
value
end
end
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
您的视图保持不变。为什么要编写自己的
cache
方法,而不使用Rails附带的cache
方法?使用Rails.cache.fetch
块应该needful@spickermann因为它是一个助手,它很普通function@Md.FarhanMemon“它的目的是什么?”斯皮克曼说,但它应该在这里工作缓存将存储在redis中?我在application.rbconfig.cache\u store=:redis\u store中设置了'redis://localhost:6379/0/cache“是的,它应该可以工作,如果你仍然收到相同的错误,请告诉我相同的问题,它不集成html