web-dev-qa-db-fra.com

Obtenir la liste des clés de cache dans Django

J'essaie de comprendre comment Django définit les clés de mes vues. Je me demande s’il est possible de récupérer toutes les clés enregistrées auprès de Memcached. quelque chose comme une cache.all() ou quelque chose. J'ai essayé de trouver la clé avec cache.has_key('test') mais je n'arrive toujours pas à comprendre comment les clés de vue sont nommées.

UPDATE: La raison pour laquelle j'en ai besoin est parce que je dois supprimer manuellement des parties du cache, mais je ne connais pas les valeurs de clé définies par Django pour ma clé cache_view.

20
Brenden
3
ygneo

Vous pouvez utiliser memcached_stats à partir de: https://github.com/dlrust/python-memcached-stats . Ce paquet permet de visualiser les clés memcached depuis l’environnement python.

2
dino

Comme mentionné, il n’ya aucun moyen d’obtenir une liste de toutes les clés de cache dans Django. Si vous utilisez un cache externe (par exemple, memcached ou cache de base de données), vous pouvez inspecter directement le cache externe.

Mais si vous voulez savoir comment convertir une clé Django en une clé utilisée dans le système backend, la fonction make_key () de Django le fera.

https://docs.djangoproject.com/fr/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

Si cela n’est pas trop obsolète, j’ai eu un problème similaire, car j’ai dû réitérer sur tout le cache. J'ai réussi, quand j'ajoute quelque chose à mon cache comme dans le pseudocode suivant:

#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