Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-to-get-all-available-keys.html

Redis 遍历并查看返回所有(或指定规则)key 的命令

Redis 笔记 Redis 笔记


Redis 通过 client 命令如何查看返回所有可能的 key 命令有两种方式,一个是 keys 命令,在 2.8 版本及之后,可以用够高级的 scan 命令。

方式一:keys

KEYS pattern

Redis KEYS 命令查找并所有符合指定模式 pattern 的 key,如果要返回所有的 key,pattern 用通配符 * 替代即可。

KEYS *

该命令时间复杂度为 O(N),当数据库键非常多时,该命令应谨慎使用,线上环境慎用。

方式二:scan

Redis 在 2.8 版本及以后,可以选择更高级的 SCAN 命令代替 KEYS 命令。

SCAN cursor [MATCH pattern] [COUNT count]

Redis SCAN 命令查找给定数量内个数的符合给定模式 pattern 的 key。

KEYS 和 SCAN 的区别

keys 命令特点:

  • 该指令一次性返回所有匹配的 key;
  • key的数量过大时,会影响 redis 的性能,会导致服务卡顿。

scan 命令特点:

  • 基于游标的迭代器,需要基于上一次的游标延续之前的迭代过程;
  • 增量式迭代命令并不保证每次执行都返回某个给定数量的元素,只能是大概率符合 COUNT 参数;
  • 返回的游标不一定是递增的,可能会获取到重复key,需要在外部程序去重。

综上所述,数据量小时使用 KEYS,反之使用 SCAN