【发布时间】:2017-07-28 21:20:04
【问题描述】:
我知道 Redis 将 MATCH 作为 SCAN 的一部分(详细为 here)来查找与 glob 样式模式匹配的键(即 sub.domain.com 可能是从scan 0 MATCH *.domain.com返回)
我的问题是是否有办法执行反向操作。如果我的键 是 glob 样式模式(即 *.domain.com 是键之一),我如何搜索以查看哪些键具有匹配 sub 的模式.domain.com?
一个想法是使用EVAL 编写一个Lua 脚本来执行此操作,但我认为这会占用大量资源?有没有其他方法可以解决这个问题?
为了让事情更清楚一点,这里有一些示例键(用逗号分隔)(我现在不担心这些值,因为它们并不真正适用于这个问题)、查询和响应我希望查询会生成:
键:
*img.myserver.com*、*.mywebsite.com*、*www.example.com/images*
查询 -> 预期响应(匹配键)
scan 0 REV-MATCH https://img.myserver.com/myimg.jpg -> *img.myserver.com*
scan 0 REV-MATCH http://www.myserver.com/otherimg.jpg -> 没有匹配项
scan 0 REV-MATCH http://www.mywebsite.com/blah/blah.jpg -> *.mywebsite.com*
scan 0 REV-MATCH https://www.example.com/images/old/a.jpg -> *www.example.com/images*
REV-MATCH(反向匹配)是一个不存在的功能 - 但我希望可以通过其他方式找到类似的功能。如果两个键具有在某些情况下可以匹配相同字符串的 glob 模式,则可能存在多个匹配项(但是,在我的用例中,这不会发生,因为我始终确保 glob 模式永远不会重叠)
【问题讨论】: