使用Rails中的memcache来缓存对象
-
- Page Cache
-
- Action Cache
- Fragment Cache
当我说“不是什么或者,只是想普通地存储对象”时。
gem 'dalli'
config.cache_store = :dalli_store
作为以下的使用方式。
Rails.cache.read("key") # => nil
Rails.cache.write("key", [1,2,3], expires_in: 1.hour) # 1時間で消える。
Rails.cache.read("key") # => [1, 2, 3]
将键值key设为符号也是可以的。
当我们真正使用的时候
hoge = Rails.cache.read("hoge_key")
if hoge.nil?
hoge = get_hoge_value(xxx)
Rails.cache.write("hoge_key", hoge, expires_in: 1.hour)
end
应该会变成那种感觉。
使用fetch,可以这样写成以下形式。
hoge = Rails.cache.fetch("hoge_key", expires_in: 1.hour) do
get_hoge_value(xxx)
end
应该只使用这个基本方法。
如果在write或fetch的选项中传递compress: true,它将压缩数据。虽然编码/解码可能需要时间,但由于通信量减少,结果速度会更快。
事实上,默认情况下似乎设置了16K的compress_threshold,所以只要原始数据没有被压缩,就应该使用它。
请以此为参考
http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html
http://guides.rubyonrails.org/caching_with_rails.html
以下是网址链接:
1. http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html
2. http://guides.rubyonrails.org/caching_with_rails.html