使用memcached基于版本使缓存无效

时间:2012-08-13 23:15:48

标签: python django memcached

使用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

1 个答案:

答案 0 :(得分:0)

没有好办法做到这一点。 memcached FAQ中有一种可能的解决方案。

您也可以使用缓存后端和模式支持,例如django-redis,并使用模式"{KEY_PREFIX}:{VERSION}:*"删除