KEYS:获取所有与给定匹配符相匹配的键
KEYS
命令接受一个全局匹配符作为参数,然后返回数据库里面所有与这个匹配符相匹配的键作为结果:
- KEYS pattern
举个例子,如果我们想要获取数据库包含的所有键,那么可以执行以下命令:
- redis> KEYS *
- 1) "fruits"
- 2) "user::12312::profile"
- 3) "user::ip"
- 4) "user::id"
- 5) "cache::/user/peter"
- 6) "todo-list"
又或者说,如果我们想要获取所有以 user::
为前缀的键,那么可以执行以下命令:
- redis> KEYS user::*
- 1) "user::12312::profile"
- 2) "user::ip"
- 3) "user::id"
最后,如果数据库里面没有任何键与给定的匹配符相匹配,那么 KEYS
命令将返回一个空值:
- redis> KEYS article::*
- (empty list or set) -- 数据库里面没有任何以 article:: 为前缀的键
全局匹配符
KEYS
命令允许使用多种不同的全局匹配符作为 pattern
参数的值,表 11-1 展示了一些常见的全局匹配符,并举例说明了这些匹配符的作用。
表 11-1 Glob 匹配符的作用及其示例
匹配符 | 作用 | 例子 |
---|---|---|
| 匹配零个或任意多个任意字符 | user:: 可以匹配任何以 user:: 为前缀的字符串,比如 user::ip 、 user::12312::profile 等等,以及 user:: 本身;z 可以匹配任何以字母 z 结尾的字符串,比如 antirez 、 matz 和 huangz ,以及字母 z 本身;
::* 可以匹配任何使用了 :: 作为间隔符的字符串,比如 user::ip 和 cache::/user/peter ,但不能匹配 todo-list 。 |
? | 匹配任意的单个字符 | user::i? 可以匹配任何以 user::i 为前缀,后跟单个字符的字符串,比如 user::ip 、 user::id 等,但不能匹配 user::ime 。 |
[] | 匹配给定字符串中的单个字符 | user::i[abc] 可以匹配 user::ia 、 user::ib 和 user::ic ,但不能匹配 user::id 或者 user::ime ,诸如此类。 |
[?-?] | 匹配给定范围中的单个字符 | user::i[a-d] 可以匹配 user::ia 、 user::ib 、 user::ic 和 user::id ,但不能匹配除此以外的其他字符串,比如 user::ip 或者 user::ime 。 |
关于全局匹配符的更多信息可以参考维基百科https://en.wikipedia.org/wiki/Glob_(programming))或者 glob
程序的手册页面:http://man7.org/linux/man-pages/man7/glob.7.html 。
其他信息
属性 | 值 |
---|---|
复杂度 | O(N) ,其中 N 为数据库包含的键数量。 |
版本要求 | KEYS 命令从 Redis 1.0.0 版本开始可用。 |