Redis Commands KEYS
可用版本:1.0.0
时间复杂度:O(N)
,其中 N 是数据库中的键数量,假设数据库中的键名和给定模式的长度有限。
ACL 类别:@keyspace, @read, @slow, @dangerous
功能:返回所有匹配模式的键。
尽管该操作的时间复杂度为 O(N)
,但常数时间相对较低。例如,运行在入门级笔记本上的 Redis 可以在 40 毫秒内扫描包含 100 万个键的数据库。
警告:
应仅在生产环境中极其谨慎地使用 KEYS
命令。当它在大型数据库上执行时,可能会破坏性能。此命令主要用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用 KEYS
。如果你需要在键空间的子集中查找键,建议使用 SCAN
或 sets
。
支持的通配符模式:
h?llo
匹配hello
,hallo
和hxllo
h*llo
匹配hllo
和heeeello
h[ae]llo
匹配hello
和hallo
,但不匹配hillo
h[^e]llo
匹配hallo
,hbllo
,但不匹配hello
h[a-b]llo
匹配hallo
和hbllo
如果要逐字匹配特殊字符,可以使用 \
进行转义。
在使用 Redis 集群时:
对于映射到单个槽位的模式,搜索进行了优化。如果模式只能匹配一个槽位的键,Redis 在搜索匹配该模式的键时,只会遍历该槽位中的键,而不会遍历整个数据库。例如,使用模式 {a}h*llo
时,Redis 会尝试仅在槽位 15495 中匹配该模式,该槽位由哈希标签 {a}
映射。
在集群中单个节点中调用 KEYS
命令时,并不能到所有主节点上的主节点槽位上的所有匹配键,示例如下,集群所有的字符串键值对如下,在某一个节点上使用 KEYS
命令获取到部分键值。
1 | keys * |
相关链接
OB links
OB tags
#Redis
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 z2huo!
评论