我继承了一个看起来像是在使用 memcached 的 Rails 项目。
我有一个控制器,在一种方法中,我将一个值存储在缓存中:
Rails.cache.write("key", @var)
在随后在同一个控制器中调用的另一种方法中,我将其读回:
@var = Rails.cache.read("key")
并且变量为零。为什么缓存不起作用?我刚刚开始使用 ROR,所以很有可能它是非常基本的东西。
我继承了一个看起来像是在使用 memcached 的 Rails 项目。
我有一个控制器,在一种方法中,我将一个值存储在缓存中:
Rails.cache.write("key", @var)
在随后在同一个控制器中调用的另一种方法中,我将其读回:
@var = Rails.cache.read("key")
并且变量为零。为什么缓存不起作用?我刚刚开始使用 ROR,所以很有可能它是非常基本的东西。
只需检查几件事:
您是否在开发环境中启用了缓存?
您没有说您使用的是哪个版本的 RoR,但是默认情况下development
环境中未启用缓存。
要启用它,请config.action_controller.perform_caching = true
在config/environments/development.rb
文件中设置。
您是否启动了 memcached 服务器?
如果没有,请从memcached -vv
如果当您尝试写入缓存时您的 memcached 服务器已关闭,则调用Rails.cache.write
将返回false
,随后的调用Rails.cache.read
将因此返回nil
。