小编典典

Redis Python-如何在python中根据特定模式删除所有键,而无需python迭代

redis

我正在编写django管理命令来处理一些我们的Redis缓存。基本上,我需要选择所有确认为特定模式的键(例如:“ prefix:*”)并删除它们。

我知道我可以使用cli来做到这一点:

redis-cli KEYS "prefix:*" | xargs redis-cli DEL

但是我需要在应用程序中执行此操作。所以我需要使用python绑定(我正在使用py-redis)。我尝试将列表送入Delete中,但是失败了:

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?

谢谢!


阅读 531

收藏
2020-06-20

共1个答案

小编典典

我觉得

 for key in x: cache.delete(key)

非常好,简洁。 delete确实一次只想要一把钥匙,所以您必须循环。

2020-06-20