21

redis-rails を使用しています。キャッシュキーについては、配列を使用しています:

Rails.cache.fetch([self.class.name, :translated_attribute, id, field, I18n.locale]) do
  self.read_attribute field, locale: I18n.locale
end

ここで、[self.class.name, :translated_attribute, id] と一致するキーを持つすべてのキャッシュを削除する必要があります。delete_matched部分一致のキーの後にワイルドカード(*)を取ることは知っています。

しかし、生成された正確なキーが何であるかはわかりません。ここで、配列をキーとして使用するときにキーがどのように作成されるかを知る必要があります。[:foo, :bar, :dum] をキャッシュ キーとして使用すると、キャッシュ ストア内の正確なキーは何になるでしょうか?

4

1 に答える 1

37

デフォルトの Rails キャッシュ キーの形式は [class]/[id]-[timestamp] です。

私は通常、Rails のデフォルトのキャッシュ キー形式を使用しません。代わりに独自のキーを作成するので、Redis で操作しやすくなります。

cache_key = "#{self.class.name}/#{translated_attribute}/#{id}/#{field}/#{I18n.locale}"

Rails.cache.fetch(cache_key) do
  self.read_attribute field, locale: I18n.locale
end

Rails.cache.delete(cache_key)
Rails.cache.delete_matched("#{self.class.name}*#{id}*")
于 2013-10-26T06:51:23.840 に答える