对于缓存问题,我正在缓存所需对象的属性数组:
friends = [{:id => 4, :name => "Kevin"}, {:id => 12, :name => "Martin"}, …]是否可能有一个使用这个数组的用户列表,以便我可以使用Ruby方法?例如,我通常会得到一张非朋友的清单:
non_friends = User.all - current_user.friends在这里,current_user.friends将被缓存的数组所替代,只使用缓存的属性:
friends = [
#<User id: 4, name: "Kevin", created_at: nil, updated_at: nil, email: nil>,
#<User id: 12, name: "Martin", created_at: nil, updated_at: nil, email: nil>,
…
]有可能吗?这是一种很好的缓存方法吗?( ActiveRecords的大列表不适合1MB的Memcache块。)
谢谢,
凯文
编辑:这背后的想法是使用一个排序/处理的2000 ActiveRecords列表,我的应用程序主要使用这个列表,但是由于它不适合于一个Memcache块,所以我尝试将有趣的属性缓存为一个数组。现在,我如何像使用ActiveRecord数组一样使用这个数组?
发布于 2010-10-22 14:32:58
好的,您可以缓存用户ID,然后在查找器条件下排除这些ID。在您的示例中,假设您有一个包含In和名称的friends散列数组:
friend_ids = friends.map{ |f| f[:id] }
if friend_ids.empty?
non_friends = User.all
else
non_friends = User.all(:conditions => ['id NOT IN (?)', current_user.friend_ids])
endhttps://stackoverflow.com/questions/3997427
复制相似问题