我已经搜索了很长一段时间,还没有找到解决方案。我使用的是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在create操作中:
@myooo = Myooo.new(params[:myooo])
Myooo.create_c(@myooo)我知道这是一个奇怪的脚本,但我需要了解我应该如何处理会话缓存,并在实际项目中使用它。我花了很多时间在服务器大纲控制台上,做了许多puts,试图理解发生了什么。缓存看起来像一个经典的缓存,而不是会话缓存。
我很高兴能得到帮助(ps:新年快乐) :)
发布于 2013-01-02 01:40:05
(我写了更长的文本cca 500个字符)是的,你是对的,我说的是this。我正在建立一个大的应用程序,大约30个分贝的表,所有的都集中在用户表(对我来说它很大,我从来没有在最大的项目中工作过)。当用户登录时,我想缓存用户声称的数据。有很多对数据库的查询,所以我想缓存它们。有没有其他方法可以解决我的问题而不使用存储在会话中的缓存数据?
使用create的示例仅用于测试...(不是真正的测试,而是为我测试,如果它工作正常的话)在opera中,我填写表单并调用create方法。我希望数据将只为用户与opera存储。在视图中,我做了这样的事情:
<% a = Rails.cache.read(:myooo_create) %>
<% if !a.nil? %>
<%= a.myi %><br/>
<%= a.mys %>
<% end %>但是当我迁移到firefox时,数据就在那里...所以我猜,这些数据不是保存在会话缓存中,而是保存到“通用缓存”中。(当然,这个视图代码太糟糕了!但对于dalli学习来说,这是很好的;)
https://stackoverflow.com/questions/14109631
复制相似问题