https://www.jianshu.com/p/80e3ca1e76af
1.Keys
keys pattern* // keys *pattern* // keys pattern?? /
优点:
可以一次返回所有符合条件的key。
缺点:
- 没有offset、limit参数,不能限制查询个数
- keys是遍历算法,复杂度O(n),数据量大的时候会导致redis卡顿
2.Scan
SCAN命令是一个基于游标的迭代器:SCAN命令每次被调用后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为SCAN命令的游标参数,以此来延续之前的迭代过程。
SCAN cursor [MATCH pattern] [COUNT count]
优点:
- 复杂度O(n),但是scan是通过游标分步进行,不阻塞
- 提供limit,可控制返回结果数
- 同keys一样,提供模式匹配
- 服务器不需要为游标保存状态,唯一状态是scan返回客户端的游标整数
缺点:
- 返回结果可能重复,需要客户端去重
- 如果遍历过程中有数据修改,改动后的数据不保证同步