我们有一个页面显示我们的应用程序的顶级组。排行榜的计算成本很高,所以我们将结果缓存一个小时,如下所示:
@groupboard = Rails.cache.fetch("top_groups", :expires_in => 1.hour) do
Group.top_groups
end
这是在第一次写入缓存后出现错误。在控制台中四处寻找,我看到 Group.top_groups 返回一个项目数组,如下所示:
[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, 3887]
当我查看从缓存返回的结果时,它看起来如下:
[#<Group id: 4, name: "IBP", rank: 6, users_count: 13, leader_id: 4662>, :@new_record_before_save], false, 3887]
有谁知道是什么导致@new_record_before_save 和“假”值被插入到缓存中该对象的所有条目中?
我们正在使用 Dalli、Memcached 1.4.9、Rails 3.2.4、Ruby 1.9.2