- 用法
-
KEYS pattern
- 复杂度
- O(N),其中 N 为数据库中的键数量,前提是数据库中的键名和给定的模式长度有限。
- 版本
- 1.0.0
- ACL 类别
- @keyspace, @dangerous, @read, @slow
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
返回所有与 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 的键列表。