我在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
我记得我尝试了这些问题中提到的解决方案,但遇到了错误。
该如何摆脱这个令人难以捉摸且令人讨厌的错误?