如何在 Rails 中缓存哈希?

bro*_*son 2 ruby hash memcached caching ruby-on-rails

我正在使用 Rails 4.2.1 和 memcached。我似乎无法缓存哈希。如何缓存哈希?

irb(main):039:0* 
irb(main):040:0* Rails.cache.fetch("development_test") do
irb(main):041:1* 'hi'
irb(main):042:1> end
Cache read: development_test
Cache fetch_hit: development_test
=> "hi"
irb(main):043:0> Rails.cache.fetch("development_test")
Cache read: development_test
=> "hi"
irb(main):044:0> Rails.cache.fetch("development_test") do
irb(main):045:1* {'x' => 3}
irb(main):046:1> end
Cache read: development_test
Cache fetch_hit: development_test
=> "hi"
irb(main):047:0> Rails.cache.fetch("development_test")
Cache read: development_test
=> "hi"
irb(main):048:0> 
Run Code Online (Sandbox Code Playgroud)

小智 5

检查文档:http : //apidock.com/rails/ActiveSupport/Cache/Store/fetch

使用给定的键从缓存中获取数据。如果缓存中有给定键的数据,则返回该数据。

但是您可以将选项 force 与 true 一起使用:

Rails.cache.fetch("development_test", force: true) do
  {'x' => 3}
end
Run Code Online (Sandbox Code Playgroud)

用于重写缓存值