Redis-通过前缀获取所有key

https://www.jianshu.com/p/80e3ca1e76af

1.Keys

keys pattern*   //
keys *pattern*  //
keys pattern??   /

优点:

  可以一次返回所有符合条件的key。

缺点:

  1. 没有offset、limit参数,不能限制查询个数
  2. keys是遍历算法,复杂度O(n),数据量大的时候会导致redis卡顿

 2.Scan

  SCAN命令是一个基于游标的迭代器:SCAN命令每次被调用后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为SCAN命令的游标参数,以此来延续之前的迭代过程。

SCAN cursor [MATCH pattern] [COUNT count]

优点:

  1. 复杂度O(n),但是scan是通过游标分步进行,不阻塞
  2. 提供limit,可控制返回结果数
  3. 同keys一样,提供模式匹配
  4. 服务器不需要为游标保存状态,唯一状态是scan返回客户端的游标整数

缺点:

  1. 返回结果可能重复,需要客户端去重
  2. 如果遍历过程中有数据修改,改动后的数据不保证同步
posted @ 2020-09-07 21:28  Qmillet  阅读(14226)  评论(0编辑  收藏  举报