Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis:查找与模式匹配的键_Redis_Pattern Matching - Fatal编程技术网

Redis:查找与模式匹配的键

Redis:查找与模式匹配的键,redis,pattern-matching,Redis,Pattern Matching,如何找到与以下模式匹配的键: 例如: 我有一些钥匙: abc:parent1 abc:parent2 abc:parent1:child1 abc:parent2:child2 我怎样才能找到唯一的答案 abc:parent1 abc:parent2命令按键模式 我也会帮你的 例: 对于您的特定示例,以下命令将起作用: redis 127.0.0.1:6379> keys *parent[0-9] 1) "abc:parent2" 2) "abc:parent1" 给你 更新:尽管上面的

如何找到与以下模式匹配的键:

例如:

我有一些钥匙:

abc:parent1

abc:parent2

abc:parent1:child1

abc:parent2:child2

我怎样才能找到唯一的答案

abc:parent1

abc:parent2
命令按键模式 我也会帮你的

例:

对于您的特定示例,以下命令将起作用:

redis 127.0.0.1:6379> keys *parent[0-9]
1) "abc:parent2"
2) "abc:parent1"
给你

更新:尽管上面的建议可以帮助您获得所需的输出,但redis-KEYS命令与前面提到的其他命令一样有害。密钥被阻塞,在准备响应时会消耗大量RAM

不要在常规应用程序代码中使用密钥。如果您正在寻找在键区的一个子集中找到键的方法,请考虑使用扫描或设置。


感谢真正的比尔和伊塔玛,我有了更好的理解

由于其工作方式,Keys被特别指定为不在生产中运行的命令。这里需要的是创建键的索引。使用
集合
存储所需图案的键名称。添加新的we密钥时,请将其名称添加到集合中。例如:

Set abc:parent1:child1 breakfast
Sadd abc:parent1:index abc:parent1
然后,当您需要列表时:

Smembers abc:parent1:index
将为您提供列表,而不会出现与使用“邪恶”键命令相关的惩罚和问题。此外,您还可以在删除密钥时使用
sremove
删除条目。您还可以通过一次调用了解索引中有多少键


如果您绝对肯定地避免使用索引,请使用
SCAN
而不是键。您应该考虑的唯一一个时间是运行一个调试奴隶,其中唯一的进程是调试过程。p> 如何使用
权限:/url1/id/sub:write
权限:/url1/id:write
只匹配
权限:/url1/[^/]+
@ItamarHaber
并不邪恶。在生产代码中使用它是非常困难的。作为一个开发工具,它是非常宝贵的。我不太明白它应该如何工作。在你的例子中,它实际上应该是:
设置abc:parent1:child1早餐
,然后
添加abc:parent1 child1
?不,因为OP只想达到parent1而不是child的水平。我误解了这个问题,谢谢你的澄清。我仍然感到困惑。OP想找到“abc:parent1 abc:parent2”难道不应该是sadd abc:parent1和sadd abc:parent2和smembers abc吗?@TheRealBill你能在你的例子中更详细地描述一下吗?:)我真的不明白?如何使用模式
abc:parent1
获取所有键和值?
Smembers abc:parent1:index