KEYS

语法
KEYS pattern
可用版本
Redis 开源版 1.0.0
时间复杂度
在数据库中键名和给定模式长度有限的假设下,时间复杂度为 O(N),其中 N 是数据库中的键数量。
ACL 类别
@keyspace, @read, @slow, @dangerous,

返回所有匹配 pattern 的键。

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

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

支持的 glob 风格模式

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

如果要匹配特殊字符本身,请使用 \ 进行转义。

使用 Redis 集群时,搜索会针对暗示单个槽的模式进行优化。如果模式只能匹配单个槽中的键,则 Redis 在搜索匹配模式的键时,只会遍历该槽中的键,而不是整个数据库。例如,对于模式 {a}h*llo,Redis 只会尝试与槽 15495 中的键匹配,该槽由哈希标签 {a} 暗示。有关使用哈希标签的模式,请参阅集群规范中的哈希标签以获取更多信息。

示例

MSET firstname Jack lastname Stuntman age 35 KEYS *name* KEYS a?? KEYS *

RESP2/RESP3 回复

数组回复:匹配 pattern 的键列表。
评价本页
返回顶部 ↑