Redis键作为正则表达式?

时间:2011-04-06 13:22:35

标签: regex redis

我必须使用密钥创建一个redis数据库作为正则表达式模式(URL模式:可能我应该说只是URL路径)。因此,当URL进入我的应用程序时,我需要查看它适合的模式并获取密钥。 redis是否已经提供了更简单的模式匹配方法?

  Any thoughts to improve the logic is appreciated.

此致 Lalith

4 个答案:

答案 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开销,这是在匹配之前扫描批次大小。