0

Django と Memcached を使用して、無効にしたい一連のキャッシュがあります。それらをすべて一意のバージョン番号に保存しているので、それらを無効にすることができます。ただし、Django サイトの指示に従うと、ValueError が発生します。

私のバージョン番号は次のようになります: 20991791. したがって、一般的には整数です。

バージョン 20991791 ですべての memcache キーを無効にするにはどうすればよいですか?

参考までに、次のように設定します。

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

1 に答える 1

0

これを行う良い方法はありません。memcachedFAQには可能な解決策の1つがあります。

また、パターンをサポートするキャッシュバックエンド、たとえばdjango-redisを使用したり、patternを使用して削除したりできます。"{KEY_PREFIX}:{VERSION}:*"

于 2012-08-13T23:44:03.153 に答える