2012-01-16 27 views
4

Ruby on Railsを実行していて、Dalli gemを使ってmemcachedにアクセスしています。memcachedのキー範囲を削除する方法(Dalli + RoRを使用)

質問:「USERINFO」で始まるキーですべてのmemcachedエントリを削除します。言い換えれば、どのようにしてワイルドカードを使用することができますか?ある範囲のキーを削除しますか?あなたはRails.cache.delete_matchedを見ている必要があり

+3

はmemcachedのは、このメソッドはDalliでは動作しません。この –

答えて

0

http://apidock.com/rails/ActiveSupport/Cache/Store/delete_matched

はtheorically、正確に何をしたいん。

Rails.cache.delete_matched /^USERINFO/

+4

(またはRailsの中の標準的なmemcachedのキャッシュストア)のようなものをサポートしていないと思います。 – mkrmr

+0

あなたはdalliにdelete_matched機能を追加するためにこの宝石を試すことができますhttps://github.com/Phobos98/dalli-delete-matched – mgauthier

0

短い答えはノーであり、あなたはしたくありませんそれを行う。

dalli gemでもmemcachedでも、1つのコマンドで複数のキーを削除するのが正当な理由があります。 memcachedはキーをハッシュすることによってキャッシュされた値の位置を決定するので、複数のキャッシュノードを持つ実動環境では、delete_matchedオペレーションは、すべてのノードをスキャンして、潜在的に一致するキーを探す必要があります。これは、パフォーマンスであるmemcachedという重要な目標を破ります。

dalliを拡張し、deleted_matchedの実装を提供することを約束するいくつかの実装が存在します。これらはすべて、パフォーマンスよりもプログラマの利便性を犠牲にしているようですので注意して使用してください。それらを使用する前にこれらの宝石の源を見てみるのは良いスタートです。


関連質問Is it possible to get/search Memcached keys by a prefix?

関連する問題