KV型内存数据库Redis(7)

SCAN命令保证在整个迭代期间一直存在于数据库中的键一定会被返回。如果一个元素是在迭代过程中被添加到数据集的, 又或者是在迭代过程中从数据集中被删除的, 那么这个元素可能会被返回, 也可能不会, 这是未定义的。

SCAN命令可能会将一个键返回多次,由应用程序处理重复的元素。

Redis中提供了几个类似的命令用于遍历大集合:

SSCAN: 遍历集合(set)

HSCAN: 遍历哈希表(hash)

ZSCAN: 遍历有序集合(zset), 包括元素成员和元素分值

127.0.0.1:6379> zadd z 1 a 2 b 3 c (integer) 0 127.0.0.1:6379> zscan z 0 1) "0" 2) 1) "a" 2) "1" 3) "b" 4) "2" 5) "c" 6) "3" HyperLogLog

一个集合中不重复元素的个数称为集合的基数,如集合{a, b, c}的基数为3。

HyperLogLog是一种估计大集合基数的算法,Redis封装了该算法:

PFADD命令将元素添加到HyperLogLog中:

PFADD key element [element ...]

PFCOUNT命令返回基数估计值,当给定了多个key时则返回它们基数之和(不是并集的基数):

PFCOUNT key [key ...]

PFMERGE命令将多个HyperLogLog合并,destKey的基数即为sourceKey并集的基数:

PFMERGE destkey sourcekey [sourcekey ...]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e09f70bdc9085347e509b9c215eb523f.html