我遇到了一个声称使用memcached的现有Rails项目。作为测试,我试着用
将对象放入缓存中Rails.cache.write("gateway", @gateway)
然后用
检索 Rails.cache.read("gateway", @gateway)
然而这返回nil,为什么呢?
这是在开发环境中,memcached已经安装并运行,并且应该通过条目配置启用。Cache_classes = true, config.action_controller. conf = true。Perform_caching = true
Rails项目以各种不同的方式使用memcached,但如果你在Rails 3项目上工作,那么我建议他们可能使用'dalli' gem,它使用memcached会话存储。所以使用缓存可以是这样的session[:gateway] = @gateway
和相反的@gateway = session[:gateway]
另一种方式是memcache.set('gateway',@gateway')
和memcache.get('gateway')
将有助于查看配置代码。检查/config/initializers/session_store.rb
是否有类似Rails.application.config.session_store :dalli_store ............
的内容
也正如在评论中所说,如果你在开发缓存可能会关闭。检查您的config/development.rb
文件是否包含以下内容:config.action_controller.perform_caching = false
另一件事是你需要在你的操作系统上安装memcached 对于linux,这是sudo apt-get install memcached
,可以通过ps aux | grep memcache
检查(这应该显示两个进程grep和memcache)
还应该查看rails缓存指南