我正在缓存这样的模型的结果(使用 Memcached):
Rails.cache.fetch('Store.all') { Store.all }
后来,我想检索 Store.all 的子集,例如某个城市的商店。有没有一种简单的方法来查询已经缓存的商店集,或者我是否需要为每个查询再次访问数据库?
谢谢!
最佳答案
请记住,数据库针对匹配任意条件的查询进行了优化,并且缓存存储只是在您拥有已知 key 的情况下进行快速查找。您应该仅对已经过滤或准备的内容使用缓存。
假设城市 1 中的所有商店都有像 cities/1/stores
这样的缓存键,您可以缓存此集合并稍后再次获取。
如果您有大量商店,尝试将 Store.all
缓存为一个缓存键,然后尝试使用 ruby 针对给定城市对其进行过滤,这将是一种反优化,或者任何其他标准。您的程序将被迫迭代所有城市,因为数组在city_id
上没有索引。您最好让数据库使用“where”子句来完成这项工作,并使用数据库提供的索引功能。
关于ruby-on-rails - 可以查询 Rails 中缓存的条目集合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10746811/