SCAN
命令是 Redis 中常用的命令之一,可以遍历 Redis 数据库中的所有键。该命令被设计为逐步迭代整个数据库,并按顺序返回匹配模式的键名。
SCAN
命令有两个参数:游标(cursor)和匹配模式(match pattern)。其中,游标用于记录上次遍历的位置,从而实现增量遍历;匹配模式则用于过滤出符合条件的键。
下面是 SCAN
命令的语法:
SCAN cursor [MATCH pattern] [COUNT count]
cursor
:表示上一次遍历结束时返回的下一个游标(初次调用该命令时,将该参数设置为 0);MATCH pattern
:可选参数,表示要筛选出来的键名必须与给定的 glob-style 模式(pattern)相匹配。例如,如果想要获取所有以 “user” 开头的键,则可以指定 MATCH user*;COUNT count
:可选参数,表示每次扫描返回多少条数据(默认值为 10)。此处所说的“数据”是指符合条件的键名。
需要注意以下几点:
- 游标不是主动传入 SCAN 函数进行控制,而是 SCAN 函数在每一轮迭代后会返回下一轮迭代所需传入函数内部控制游标变量。
- 因为使用了游标的机制,所以 SCAN 命令可以无阻塞地遍历整个数据库。这点是 KEYS 命令不具备的。
- 对于数据集比较大的情况下(百万级别),一次性返回会消耗过多内存和带宽资源。可以采用 COUNT 参数分批取出遍历结果,减轻 Redis 服务器压力。