0

使用 Django 和 Memcached,我有一系列我想失效的缓存。我一直将它们全部保存为唯一的版本号,以便使它们无效。但是,按照 Django 站点的指示,我得到一个 ValueError。

我的版本号看起来像:20991791。所以一般来说是整数。

如何使版本 20991791 中的所有 memcache 密钥无效?

仅供参考,设置如下:

>>> cache.set('laugh',2,version=3)

通过只知道版本号“3”,我需要删除版本号 3 中的所有键。我以为 incr_version 这样做了,但是当我尝试时,它给出了一个 valueerror。

>>> 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
4

1 回答 1

0

There is no good way to do this. There is a one of possible solution in memcached FAQ.

Also you can use cache backend with patterns support, django-redis for example, and delete with pattern "{KEY_PREFIX}:{VERSION}:*"

于 2012-08-13T23:44:03.153 回答