redis的scan知识点分享( 三 )


只有两种游标是合法的:

  1. 在开始一个新的迭代时, 游标必须为 0。
  2. 增量式迭代命令在执行之后返回的, 用于延续(continue)迭代过程的游标 。
迭代终结的保证
增量式迭代命令所使用的算法只保证在数据集的大小有界(bounded)的情况下, 迭代才会停止, 换句话说, 如果被迭代数据集的大小不断地增长的话, 增量式迭代命令可能永远也无法完成一次完整迭代 。从直觉上可以看出, 当一个数据集不断地变大时, 想要访问这个数据集中的所有元素就需要做越来越多的工作, 能否结束一个迭代取决于用户执行迭代的速度是否比数据集增长的速度更快 。
可用版本:
>= 2.8.0
时间复杂度:
增量式迭代命令每次执行的复杂度为 O(1) , 对数据集进行一次完整迭代的复杂度为 O(N) , 其中 N 为数据集中的元素数量 。
返回值:
SCAN 命令、 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都返回一个包含两个元素的 multi-bulk 回复: 回复的第一个元素是字符串表示的无符号 64 位整数(游标), 回复的第二个元素是另一个 multi-bulk 回复, 这个 multi-bulk 回复包含了本次被迭代的元素 。
SCAN 命令返回的每个元素都是一个数据库键 。
SSCAN 命令返回的每个元素都是一个集合成员 。
HSCAN 命令返回的每个元素都是一个键值对,一个键值对由一个键和一个值组成 。
ZSCAN 命令返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成 。
来自:http://doc.redisfans.com/key/scan.html#id3
redisfans社区




推荐阅读