前述の@ e4c5キャッシュは高速な処理に使用されているため、同じものに対してはredisを使用する必要があります。しかし、あなたの質問はデータベースに関するものなので、私は同じ答えをします。
Djangoにこれを行うための既存の機能はありません。しかし、Pythonの最良の部分は、簡単に新しい機能を追加するための猿のパスができます。以下は、私はあなたには、いくつかの場所にパッチコードの下に追加する必要がありprefix
機能を取得するには
def index(request):
cache.set("name", "tarun")
cache.set("name_1", "tarun")
cache.set("name2", "tarun")
cache.set("name_4", "tarun")
cache.set("nam", "tarun")
cache.clear(prefix="name")
nam = cache.get("nam")
name_4 = cache.get("name_4", default="deleted")
return HttpResponse("Hello, world. nam={nam}, name_4={name_4}".format(nam=nam, name_4=name_4))
をテスト要求が作成されます。 // stackoverflowの:私はこのような
original_clear = None
def patch_clear():
from django.db import connections, router
from django.core.cache.backends.db import DatabaseCache
def __clear(self, prefix=None, version=None):
db = router.db_for_write(self.cache_model_class)
connection = connections[db]
table = connection.ops.quote_name(self._table)
with connection.cursor() as cursor:
if prefix is None:
cursor.execute('DELETE FROM %s ' % table)
else:
prefix = self.make_key(prefix, version)
cursor.execute("DELETE FROM %s where cache_key like '%s%%'" % (table, prefix))
global original_clear
original_clear = DatabaseCache.clear
DatabaseCache.clear = __clear
patch_clear()
可能性のある重複した[Djangoのキャッシュから一致するすべてのキーを削除](HTTPSとして
settings.py
を使用しました。com/questions/25292426/remove-all-matching-keys-django-cache) – lapinkoira@ lapinkoira、リンクありがとうございます。リンクされた質問の答えは、Djangoのlocalmemcacheでしか動作しないと述べています。私はDjangoのデータベースキャッシュを使用しています。私は解明する答えを更新しました。 – Wessi
あなたの問題にこのリンクを使用することができます@Wessi。 https://drupal.stackexchange.com/questions/21434/how-do-i-clear-cache-using-an-sql-query –