2

我进入了一个声称使用 memcached 的现有 Rails 项目。作为测试,我尝试将对象放入缓存中

Rails.cache.write("gateway", @gateway)

然后用

 Rails.cache.read("gateway", @gateway)

然而这返回 nil,这是为什么呢?

这是在开发环境中,memcached 已安装并正在运行,应通过条目 config.cache_classes = true 和 config.action_controller.perform_caching = true 启用。

4

1 回答 1

3

Rails 项目以各种不同的方式使用 memcached,但如果您正在处理 rails 3 项目,那么我建议他们可能使用使用 memcached session store 的' dalli ' gem。因此,可以改为使用缓存来完成类似这样的操作,而与之相反的另一种方式是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 for linux 这是sudo apt-get install memcached并且可以检查ps aux | grep memcache(这应该显示两个进程 grep 和 memcache)

更新

还应该查看rails 缓存指南

于 2013-01-14T21:26:46.470 回答