获取Django中的缓存键列表

44 投票
13 回答
60743 浏览
提问于 2025-04-17 11:18

我正在尝试理解Django是如何为我的视图设置键的。我想知道有没有办法获取Memcached中所有保存的键。比如说像一个cache.all()这样的东西。我一直在用cache.has_key('test')来查找某个键,但还是搞不清楚视图的键是怎么命名的。

更新:我需要这样做的原因是因为我想手动删除缓存中的某些部分,但不知道Django为我的cache_view键设置的键值是什么。

13 个回答

8

正如之前提到的,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'
37

对于RedisCache,你可以通过下面的方式获取所有可用的键。

from django.core.cache import cache

cache.keys('*')
2

你可以访问这个链接 http://www.darkcoding.net/software/memcached-list-all-keys/,里面有相关的说明,具体内容可以参考这个问题 如何用Python的memcached检查Django缓存的内容?

撰写回答