我正在使用 Rails.cache (我已经尝试过使用 dalli gem 的默认存储和 memcached - 但我得到相同的行为)它似乎正在工作,但不是(日志显示没有进行查询,但实际结果否则显示)...我有一个搜索页面,将前十个查询缓存 1 天:
搜索.rb
def self.top_ten
Rails.cache.fetch("top_ten_searches_cache", :expires_in => 1.day) do
Search.order("count DESC").limit(10)
end
end
但是,当我进入搜索页面,反复输入一个新的搜索词时,它开始显示在前十名的结果中!(而我不希望前十个结果在 1 天过去之前发生变化。)当缓存存储为默认值时,日志中不会显示任何查询(因此您认为缓存正在工作),而当使用 dalli/memcached 时,我得到的结果完全相同行为,但在日志中有这个:
Cache read: top_ten_searches_cache ({:expires_in=>1 day})
Cache fetch_hit: top_ten_searches_cache ({:expires_in=>1 day})
究竟是什么Cache fetch_hit
意思?这是否意味着没有找到缓存并且必须进行查询?
不太确定发生了什么 - 奇怪的是,我使用默认存储或使用 Dalli 的 memcached 得到相同的行为。