- 用法
-
KEYS pattern
- 复杂度
- O(N),其中 N 为数据库中的键数量,前提是数据库中的键名和给定的模式长度有限。
- 版本
- 1.0.0
- ACL 类别
- @keyspace, @dangerous, @read, @slow
h?llo匹配hello、hallo和hxlloh*llo匹配hllo和heeeelloh[ae]llo匹配hello和hallo,但不匹配hilloh[^e]llo匹配hallo、hbllo等,但不匹配helloh[a-b]llo匹配hallo和hbllo
返回所有与 pattern 匹配的键。
虽然此操作的时间复杂度为 O(N),但其常数时间相当低。例如,在入门级笔记本电脑上运行的 Valkey 可以在 40 毫秒内扫描 100 万个键的数据库。
警告:请将 KEYS 视为一个在生产环境中只能极其谨慎使用的命令。当它针对大型数据库执行时,可能会严重损害性能。此命令旨在用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用 KEYS。如果您正在寻找在键空间子集中查找键的方法,请考虑使用 SCAN 或 集合。
支持的 glob 风格模式
如果您想逐字匹配特殊字符,请使用 \ 进行转义。
当使用 Valkey 集群时,搜索会针对暗示单个槽位的模式进行优化。如果一个模式只能匹配一个槽位的键,Valkey 在搜索匹配模式的键时,只会遍历该槽位中的键,而不是整个数据库。例如,对于模式 {a}h*llo,Valkey 只会尝试与槽位 15495 中的键进行匹配,因为哈希标签 {a} 暗示了这一点。要使用带哈希标签的模式,请参阅集群规范中的 哈希标签 以获取更多信息。
示例
127.0.0.1:6379> MSET firstname Jack lastname Stuntman age 35
OK
127.0.0.1:6379> KEYS *name*
1) "lastname"
2) "firstname"
127.0.0.1:6379> KEYS a??
1) "age"
127.0.0.1:6379> KEYS *
1) "age"
2) "lastname"
3) "firstname"
RESP2/RESP3 回复
数组回复:匹配 pattern 的键列表。