KEYS

用法
KEYS pattern
复杂度
O(N),其中 N 为数据库中的键数量,前提是数据库中的键名和给定的模式长度有限。
版本
1.0.0
ACL 类别
@keyspace, @dangerous, @read, @slow

返回所有与 pattern 匹配的键。

虽然此操作的时间复杂度为 O(N),但其常数时间相当低。例如,在入门级笔记本电脑上运行的 Valkey 可以在 40 毫秒内扫描 100 万个键的数据库。

警告:请将 KEYS 视为一个在生产环境中只能极其谨慎使用的命令。当它针对大型数据库执行时,可能会严重损害性能。此命令旨在用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用 KEYS。如果您正在寻找在键空间子集中查找键的方法,请考虑使用 SCAN集合

支持的 glob 风格模式

  • h?llo 匹配 hellohallohxllo
  • h*llo 匹配 hlloheeeello
  • h[ae]llo 匹配 hellohallo, 但不匹配 hillo
  • h[^e]llo 匹配 hallohbllo 等,但不匹配 hello
  • h[a-b]llo 匹配 hallohbllo

如果您想逐字匹配特殊字符,请使用 \ 进行转义。

当使用 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 的键列表。