Redis Scan命令

scan命令参数解释

Scan cursor [match pattern] [count count]

cursor:游标,每次scan都会返回一个游标,用以继续下次的扫描。游标从0开始遍历,到0结束遍历。

match:匹配模式。

count:返回数量,默认是10。但scan不一定返回指定的数量。

示例:scan 0 match  A*  count 20。执行该命令,会扫描匹配A开头的key,但数量不一定是20个。如果redis存在大量不以A开头的key,A开头的key很少,那么扫描返回的结果很可能为0。因为scan是增量式迭代遍历redis中的key,每次只返回部分的key,第一次迭代遍历的key很可能没有符合匹配要求,返回结果是空,

scan命令的理解

 Scan 命令及其相关的sscan命令、HSCAN命令和ZSCAN命令都用于增量的迭代(incermentally iterate)一集元素(a collection of elements)。每次执行都只会返回少量元素,所以这些命令可以用于生产环境,而不会出现像KEYS命令、SMEMBERS命令带来的问题----当KEYS命令被用于处理一个的大数据库时,又或者SMEMBERS命令被用于处理一个大的集合键时,它们可能会阻塞服务器达数秒之久。

但是这种增量迭代也有其缺点,那就是只能提供有限的保证(offer limited guarantees about the returned elements)。也就是说:

1、同一个元素可能会被返回多次。 处理重复元素的工作交由应用程序负责, 比如说, 可以考虑将迭代返回的元素仅仅用于可以安全地重复执行多次的操作上。

2、如果一个元素是在迭代过程中被添加到数据集的, 又或者是在迭代过程中从数据集中被删除的, 那么这个元素可能会被返回, 也可能不会, 这是未定义的(undefined)。

scan的时间复杂度

增量式迭代命令每次执行的复杂度为 O(1) , 对数据集进行一次完整迭代的复杂度为 O(N) ,其中 N 为数据集中的元素数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值