web-dev-qa-db-ja.com

Rails.cache.clear特定のキー名?

何らかの方法でRails.cache.clearを実行し、特定の名前/文字列のキーのみをクリアすることは可能ですか?

キャッシュ全体を消去したくありません...名前に文字列blog/post(つまり、blog/post/1blog/post/2)を含むキーだけを削除します。

キャッシュにmemcachedで dalli を使用し、Rails 3.0.6。

61
Shpigford

私自身の質問に答えるために... memcachedを使用していることを考えると、実際にはdelete_ifまたはdelete_matchedは、memcachedがパターンによるキーの列挙または照会をサポートしていないためです( 1 )。

13
Shpigford

これは、キャッシュに書き込む方法です-

Rails.cache.write('key', 'value', :time_to_idle => 60.seconds, :timeToLive => 600.seconds)

キャッシュから削除するには、deleteアクションを使用できます-

Rails.cache.delete('key')

複数のキーを削除する-

Rails.cache.delete_if {|k, v| k =~ 'key' }
100
Sandip Ransing

https://github.com/Phobos98/dalli-delete-matched gemを使用すると、memcachedでdalliストアのdelete_matchedメソッドの簡単な実装を追加できます。

2
fkoessler