我已经在谷歌上搜索了很长时间,但还没有找到解决方案。我正在使用 Rails 3.2 和带有 memcached 1.4.14 的 Dalli gem。
我想使用 Dalli/Memcached 作为会话存储,但我不知道该怎么做。现在,Dalli 缓存像经典缓存一样工作,但不是会话缓存。我创建了一个新的 rails 应用程序,将 Dalli 添加到 Gemfile :
gem 'dalli'
在开发和生产环境中,我将 Dalli 设置为缓存存储:
config.cache_store = :dalli_store
这是的内容initializers/session_store.rb
:
require 'action_dispatch/middleware/session/dalli_store'
Rails.application.config.session_store :dalli_store, :memcache_server => ['127.0.0.1'], :namespace => 'sessions', :key => '_session', :expire_after => 30.minutes
我创建了一个Myooo
模型,在该模型中添加了列出和创建实例的方法:
def self.index_c
a = Rails.cache.read(:myooo_index)
if a.nil?
puts '--->>> load again'
a = Rails.cache.write(:myooo_index, Myooo.all, expires_in: 5.seconds)
else
puts '--->>> using cache'
end
return Rails.cache.read(:myooo_index)
end
def self.create_c(myooo_object)
a = Rails.cache.read(:myooo_create)
if a.nil?
a = Rails.cache.write(:myooo_create, myooo_object, expires_in: 10.minutes)
end
return Rails.cache.read(:myooo_create)
end
在控制器中,我只是尝试访问缓存。在索引操作中:
@myooos = Myooo.index_c
在创建动作中:
@myooo = Myooo.new(params[:myooo])
Myooo.create_c(@myooo)
我知道这是一个奇怪的脚本,但我需要了解我应该如何处理会话缓存并在实际项目中使用它。我在服务器大纲控制台上花了很多时间,做了很多尝试来了解发生了什么。缓存似乎就像经典缓存,而不是会话缓存。
我很高兴得到帮助(ps:新年快乐):)