使用Django和Memcached,我有一系列缓存,我想让它无效。我一直把它们全部保存到唯一的版本号,所以我可以使它们无效。但是,遵循Django站点的指示,我得到了一个ValueError。
我的版本号看起来像是:20991791。总的来说是整数。
如何使版本20991791中的所有内存缓存密钥无效?
仅供参考,设置如下:
>>> cache.set('laugh',2,version=3)
只知道版本号“3”我需要删除版本号为3的所有密钥。我认为incr_version做到了这一点,但是当我尝试时,它会给出一个价值误差。
>>> cache.incr_version(3)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/opt/virtual-envs/govini-web/lib/python2.6/site-packages/django/core/cache/backends/base.py", line 214, in incr_version
raise ValueError("Key '%s' not found" % key)
ValueError: Key '3' not found
答案 0 :(得分:0)
没有好办法做到这一点。 memcached FAQ中有一种可能的解决方案。
您也可以使用缓存后端和模式支持,例如django-redis,并使用模式"{KEY_PREFIX}:{VERSION}:*"
删除