Получить список ключей кэша в Django - PullRequest
21 голосов
/ 29 января 2012

Я пытаюсь понять, как Django устанавливает ключи для моих представлений. Мне интересно, есть ли способ просто получить все сохраненные ключи от Memcached. что-то вроде cache.all() или что-то. Я пытался найти ключ с помощью cache.has_key('test'), но все еще не могу понять, как называются ключи вида.

ОБНОВЛЕНИЕ: причина, по которой мне это нужно, заключается в том, что мне нужно вручную удалить части кэша, но я не знаю значений ключей, которые Django устанавливает для моего ключа cache_view

Ответы [ 6 ]

3 голосов
/ 29 января 2012
2 голосов
/ 31 июля 2012

Вы можете использовать memcached_stats из: https://github.com/dlrust/python-memcached-stats. Этот пакет позволяет просматривать ключи memcached из среды python.

1 голос
/ 11 апреля 2019

Для RedisCache вы можете получить все доступные ключи с помощью.

from django.core.cache import cache

cache.keys('*')
1 голос
/ 01 июня 2016

Как уже упоминалось, нет способа получить список всех ключей кеша в 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'
0 голосов
/ 26 июня 2018

Если это не слишком устарело, у меня возникла похожая проблема, из-за которой мне пришлось перебирать весь кеш.Мне это удалось, когда я добавил что-то в свой кеш, как в следующем псевдокоде:

#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 голосов
/ 29 января 2012

Есть некоторые странные обходные пути, которые вы можете сделать, чтобы получить все ключи из командной строки, но нет способа сделать это с memcached внутри Django. См. эту тему .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...