我必须使用密钥创建一个redis数据库作为正则表达式模式(URL模式:可能我应该说只是URL路径)。因此,当URL进入我的应用程序时,我需要查看它适合的模式并获取密钥。 redis是否已经提供了更简单的模式匹配方法?
Any thoughts to improve the logic is appreciated.
此致 Lalith
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以维护两种结构:
1 - 首先使用所有钥匙list。我的意思是,你所有的url-regex都与你的网址相匹配。每次创建另一个url-regex时都应该更新。此外,您可以在应用程序内部使用此内容,因此有时您会阅读此列表以更新项目。
2 - 第二个url-regex键。这是你所指的关键,所以在这里你把你的价值观,无论它们是什么。
我认为使用keys
不是一个好主意。这不是生产用途,至少不是商业逻辑使用它。
来自文档keys:
警告:将KEYS视为一个只能在生产环境中使用时非常谨慎的命令。在针对大型数据库执行时可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用KEYS。如果您正在寻找在密钥空间子集中查找密钥的方法,请考虑使用SCAN或集合。
答案 2 :(得分:0)
redis-cli keys "user:*" | grep "user:[0-9]\+$" | xargs redis-cli DEL
这取自Here
答案 3 :(得分:0)
redis-py
客户可以快速完成生产准备工作:
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
keys: List[str] = [k for k in r.scan_iter(match="norgx:but:blob:*", count=1000)]
现在您有了所有感兴趣的键的列表,并对其进行了正则表达式(SCAN
命令不支持。count
减少了大型数据库上的ping / pong开销,这是在匹配之前扫描批次大小。