ruby-on-rails - Rails 使用 memcached 进行缓存,无法正常工作

标签 ruby-on-rails ruby-on-rails-3 memcached

我进入了一个现有的 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/

相关文章:

ruby-on-rails - 抛出异常/错误时的错误处理

ruby-on-rails - 如何将 arbre 代码干燥成可重用的组件?

ruby-on-rails - 使用命名空间时设计和 current_user 问题

ruby-on-rails-3 - Rails 3 的基础应用程序不错吗?

ruby-on-rails-3 - 设计:注销*不*重定向?

python - 保存memcached数据后,在GAME上可以立即使用吗?

ruby-on-rails - 自定义设计方法 : render 'new' redirect to/users instead of/users/sign_up

ruby-on-rails-3 - 长时间输出后退出 rails 控制台

c++ - 关于libmemcached使用的问题

Android 退出时清除图像内存缓存