【问题标题】:Redis cache not working properly in viewsRedis 缓存在视图中无法正常工作
【发布时间】:2017-11-25 11:41:31
【问题描述】:

我使用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%>

问题是第一次显示标题,但接下来它没有显示偶数存在

【问题讨论】:

  • 为什么自己写了cache方法而不使用Rails自带的cache方法?
  • 使用 Rails.cache.fetch 块应该做的需要
  • @spickermann 因为它是其常用功能的助手
  • @Md.FarhanMemon 它的目的是什么?
  • @spickermann 但它应该可以工作

标签: ruby-on-rails ruby caching redis


【解决方案1】:

试试下面的

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

更新

Rails 已经提供了一个 helper 来缓存 Fragment,结果发现它和你自定义的 helper 名字一样,所以只要改变你的方法的名字就行了

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

你的观点保持不变..

【讨论】:

  • 此缓存将存储在 redis 中的哪个位置?
  • 我在application.rb中设置
  • config.cache_store = :redis_store, 'redis://localhost:6379/0/cache'
  • 是的,它应该可以工作,如果你仍然遇到同样的错误,请告诉我
  • 同样的问题它没有集成 html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 2019-11-24
  • 1970-01-01
  • 2019-09-01
相关资源
最近更新 更多