ИЛИ совпадение в Python Redis сканирование
Я использую Django Redis для управления кэшем Redis нашего приложения. Допустим, у меня есть следующие ключи в кэше:
user-1:color
user-1:sport
user-2:color
user-3:color
user-3:whatever
Я хочу удалить все ключи для user-1
и user-2
. Я знаю, что могу использовать метод delete_pattern()
(см. docs):
for user_id in [1, 2]:
cache.delete_pattern(f"user-{user_id}:*")
Однако это очень медленно. Смотрите эти ссылки для более подробной информации о причинах:
- https://github.com/sebleier/django-redis-cache/issues/169
- https://morganwu277.github.io/2017/07/16/Django-Redis-Scan-Too-Long/
Я хочу попробовать построить более широкий шаблон, чтобы мне нужно было сделать только один вызов delete_pattern()
. Согласно документации, шаблон имеет синтаксис glob, но я попробовал следующее, и это не работает:
cache.delete_pattern(f"user-{1,2}:*")
Есть идеи, как построить этот шаблон?