我正在编写一个 django 管理命令来处理我们的一些 redis 缓存。基本上,我需要选择所有确认特定模式的键(例如:“前缀:*”)并删除它们。
我知道我可以使用 cli 来做到这一点:
redis-cli KEYS "prefix:*" | xargs redis-cli DEL
但我需要在应用程序中执行此操作。所以我需要使用python绑定(bind)(我使用的是py-redis)。我曾尝试将列表输入删除,但失败了:
from common.redis_client import get_redis_client
cache = get_redis_client()
x = cache.keys('prefix:*')
x == ['prefix:key1','prefix:key2'] # True
# 现在
cache.delete(x)
# 返回 0 。什么都没有删除
我知道我可以迭代 x:
for key in x:
cache.delete(key)
但这会失去 redis 的超快速度并滥用其功能。有没有使用 py-redis 的 Pythonic 解决方案,无需迭代和/或 cli?
谢谢!
最佳答案
使用 SCAN 迭代器:https://pypi.python.org/pypi/redis
for key in r.scan_iter("prefix:*"):
r.delete(key)
关于python - Redis Python - 如何在python中根据特定模式删除所有键,无需python迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975228/