Ruby on Railsを実行していて、Dalli gemを使ってmemcachedにアクセスしています。memcachedのキー範囲を削除する方法(Dalli + RoRを使用)
質問:「USERINFO」で始まるキーですべてのmemcachedエントリを削除します。言い換えれば、どのようにしてワイルドカードを使用することができますか?ある範囲のキーを削除しますか?あなたはRails.cache.delete_matchedを見ている必要があり
Ruby on Railsを実行していて、Dalli gemを使ってmemcachedにアクセスしています。memcachedのキー範囲を削除する方法(Dalli + RoRを使用)
質問:「USERINFO」で始まるキーですべてのmemcachedエントリを削除します。言い換えれば、どのようにしてワイルドカードを使用することができますか?ある範囲のキーを削除しますか?あなたはRails.cache.delete_matchedを見ている必要があり
:http://apidock.com/rails/ActiveSupport/Cache/Store/delete_matched
はtheorically、正確に何をしたいん。
Rails.cache.delete_matched /^USERINFO/
短い答えはノーであり、あなたはしたくありませんそれを行う。
dalli
gemでもmemcached
でも、1つのコマンドで複数のキーを削除するのが正当な理由があります。 memcachedはキーをハッシュすることによってキャッシュされた値の位置を決定するので、複数のキャッシュノードを持つ実動環境では、delete_matched
オペレーションは、すべてのノードをスキャンして、潜在的に一致するキーを探す必要があります。これは、パフォーマンスであるmemcached
という重要な目標を破ります。
dalli
を拡張し、deleted_matched
の実装を提供することを約束するいくつかの実装が存在します。これらはすべて、パフォーマンスよりもプログラマの利便性を犠牲にしているようですので注意して使用してください。それらを使用する前にこれらの宝石の源を見てみるのは良いスタートです。
関連質問Is it possible to get/search Memcached keys by a prefix?
はmemcachedのは、このメソッドはDalliでは動作しません。この –