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