Rails应用程序从Memcache获取错误的值

时间:2018-10-02 02:47:55

标签: ruby-on-rails ruby memcached passenger dalli

我在Apache 2.4.5的乘客5.0.26之后有一个Rails 4.2应用程序。我使用ruby 2.3.1和dalli 2.7.8。使用此辅助方法从内存缓存中获取数据时,会发生一些奇怪的事情:

def get_setting(name)
 cached = Rails.cache.fetch("settings-" + name + session[:id].to_s) do
  Setting.where(:name => name, :user_id => session[:id]).value
 end
 return cached
end

如果用户1的设置为51234,用户2的设置为1000,而我仅查询用户1 ...

  

get_setting(“ setting_name”)#=> 51234,没关系

但有时...

  

get_setting(“ setting_name”)#=> 1000

我三遍检查了名称和session [:id]是否正确(将所有内容都转储到development.log中)。在生产和开发过程中都会发生这种情况。

我看到其他人遇到了这个问题,难道它不应该在以前版本的Dalli宝石中解决吗?

Rails with Memcache returning wrong cached object?

memcache fetching wrong values while using acts_as_cached plugin

我记得我尝试了这些问题中提到的解决方案,但遇到了错误。

该如何摆脱这个令人难以捉摸且令人讨厌的错误?

0 个答案:

没有答案