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

标签 python django redis django-cache redis-py

我正在编写一个 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/

相关文章:

python - 为什么我有一个带有 css 和 html 的水平滚动条

python - 如何在没有页面指示的情况下迭代 API 查询中的页面?

python - 当 child 不能继承时如何创建基类?

javascript - Express + Passport + Redis session ?

redis - Dockerize Logstash,Redis 设置

Python:使用 lambda 过滤列表

python - AutoKey Python - 如何创建全局函数库

python - Django REST 框架 - 带有附加参数的 HyperlinkedRelatedField

python - 将自定义字段添加到 Django 模型(不更改源代码)

redis - 如何监控 AWS Elasticache Redis 的操作响应时间?