web-dev-qa-db-ja.com

キャッシュキーのリストをDjango

Djangoがビューのキーを設定する方法を理解しようとしています。保存されているすべてのキーをMemcachedから取得する方法があるかどうか疑問に思っています。cache.all()か何か。cache.has_key('test')でキーを見つけようとしましたが、それでもビューキーの名前の付け方がわかりません。

更新:これが必要な理由は、キャッシュの一部を手動で削除する必要があるが、キーの値がわからないためですDjangoは、cache_viewキーの設定です

27
Brenden
3
ygneo

RedisCache の場合、使用可能なすべてのキーを取得できます。

from Django.core.cache import cache

cache.keys('*')
3
Eduard Mukans

https://github.com/dlrust/python-memcached-stats からmemcached_statsを使用できます。このパッケージにより、python環境内からmemcachedキーを表示できます。

2
dino

前述のように、Django内のすべてのキャッシュキーのリストを取得する方法はありません。外部キャッシュ(memcached、データベースキャッシュなど)を使用している場合は、外部キャッシュを直接検査できます。

Djangoキーをバックエンドシステムで使用されているキーに変換する方法を知りたい場合は、Djangoのmake_key()関数がこれを行います。

https://docs.djangoproject.com/en/1.8/topics/cache/#cache-key-transformation

>>> from Django.core.cache import caches
>>> caches['default'].make_key('test-key')
u':1:test-key'
1
Don Sarratt

これが古すぎない場合は、キャッシュ全体を反復処理する必要があったため、同様の問題が発生しました。次の疑似コードのようにキャッシュに何かを追加すると、私はそれを管理しました:

#create caches key list if not exists
if not my_cache.get("keys"):
    my_cache.set("keys", [])

#add to my cache
my_cache.set(key, value)

#add key to keys
if key not in my_cache.get("keys"):
    keys_list = my_cache.get("keys")
    keys_list.append(key)
    my_cache.set("keys", keys_list)
0
Bobesh

Memcachedのドキュメントで推奨 すべてのキャッシュキーをリストする代わりに、memcachedを冗長モードで実行して、変更されるすべてを確認します。このようにmemcachedを起動する必要があります

memcached -vv

そして、作成/更新/削除されたキーを出力します。

0
Boris