我进入了一个现有的 Rails 项目,该项目声称使用 memcached。作为测试,我尝试将对象放入缓存中
Rails.cache.write("gateway", @gateway)
然后用
检索它 Rails.cache.read("gateway", @gateway)
但是这会返回 nil,这是为什么?
这是在开发环境中,memcached 已安装并正在运行,并且应通过条目 config.cache_classes = true 和 config.action_controller.perform_caching = true 来启用。
最佳答案
Rails 项目以各种不同的方式使用 memcached,但如果您正在开发 Rails 3 项目,那么我建议他们可能使用 'dalli' gem,它使用 memcached session 存储。因此,使用缓存可以通过 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 caching guide
关于ruby-on-rails - Rails 使用 memcached 进行缓存,无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326708/