And*_*ndy 5 memcached ruby-on-rails-3 dalli
我们有一个页面显示了我们应用程序的前几组。排行榜的计算成本很高,因此我们将结果缓存一个小时,如下所示:
@groupboard = Rails.cache.fetch("top_groups", :expires_in => 1.hour) do
Group.top_groups
end
Run Code Online (Sandbox Code Playgroud)
第一次写入缓存后,这给出了错误。在控制台中四处查看,我看到Group.top_groups返回了一系列如下所示的项目:
[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, 3887]
Run Code Online (Sandbox Code Playgroud)
当我查看从缓存返回的结果时,它看起来如下:
[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, :@new_record_before_save], false, 3887]
Run Code Online (Sandbox Code Playgroud)
有谁知道会导致@new_record_before_save和'false'值插入缓存中该对象的所有条目的原因是什么?
我们正在使用Dalli,Memcached 1.4.9,Rails 3.2.4,Ruby 1.9.2
有关联对象的 AR 对象上的 Rails 缓存存在错误。尝试以下操作:
@groupboard = Rails.cache.fetch("top_groups", :expires_in => 1.hour) do
Group.top_groups.map(&:reload)
end
Run Code Online (Sandbox Code Playgroud)
查看更多信息 https://github.com/mperham/dalli/issues/250
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |