我如何找到匹配这样的模式的键:
例如:
我有一些钥匙:
abc:parent1
abc:parent2
abc:parent1:child1
abc:parent2:child2
我怎样才能找到
abc:parent1
abc:parent2
答案 0 :(得分:29)
Keys特别注明为由于其工作方式而无法在生产中运行的命令。你需要的是创建一个键的索引。使用set
存储所需模式的键名。添加新密钥时,请将其名称添加到集合中。例如:
Set abc:parent1:child1 breakfast
Sadd abc:parent1:index abc:parent1
然后当你需要清单时:
Smembers abc:parent1:index
会给你列表,没有与使用“evil”键命令相关的惩罚和问题。此外,您将删除密钥删除时sremove
的条目。您还可以通过一次调用了解索引中有多少键。
如果你绝对肯定,必须避免使用索引SCAN
而不是键。你应该考虑密钥的唯一时间是你运行一个调试从站,其中唯一使用它的进程是你的调试过程。
答案 1 :(得分:8)
命令 KEYS模式 会帮助你。
例如:
redis> MSET one 1 two 2 three 3 four 4
OK
redis> KEYS *o*
1) "two"
2) "one"
3) "four"
对于您的具体示例,以下命令将起作用:
redis 127.0.0.1:6379> keys *parent[0-9]
1) "abc:parent2"
2) "abc:parent1"
此处the detailed description of the command。
更新:虽然上面的建议可以帮助您获得所需的输出,但redis KEYS 命令却像其他人提到的那样是邪恶的。 KEYS 正在阻塞,并且在准备响应时会消耗大量RAM。
不要在常规应用程序代码中使用KEYS。如果您正在寻找在密钥空间子集中查找密钥的方法,请考虑使用SCAN或集合。
感谢Real Bill和Itamar,我得到了更好的理解。