在巨大的数据量的情况下,做查找符合某种规则的Key的信息,这里就有两种方式:
keys命令:简单粗暴,但是由于Redis是单线程,keys命令是以阻塞的方式执行的,keys是以遍历的方式实现的复杂度是 O(n),Redis库中的key越多,查找实现代价越大,产生的阻塞时间越长。
can命令: 以非阻塞的方式实现key值的查找,绝大多数情况下是可以替代keys命令的,可选性更强
1. scan相关命令
都是用于增量迭代集合元素。
SCAN 命令用于迭代当前数据库中的数据库键。
SSCAN 命令用于迭代集合键中的元素。
HSCAN 命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。
之后的例子会以sscan为例
2. 命令参数
Key:查询的相关集合名称
cursor: 游标值,第一次迭代使用 0 作为游标,表示开始一次新的迭代
[MATCH pattern] :模糊匹配
[COUNT count] :每次的查询条数,默认值为 10
2.1 创建数组
在上面这个例子中, 第一次迭代使用 0 作为游标,表示开始一次新的迭代。
第二次迭代使用的是第一次迭代时返回的游标, 也即是命令回复第一个元素的值 —— 3 。
<