一,简介
HyperLoglog 是 redis 新支持的两种类型中的另外一种(上一种是位图类型 Bitmaps )。主要适用场景是海量数据的计算。特点是速度快,占用空间小。
同样是用于计算,HyperLoglog 在适用场景方面与 Bitmaps 方面有什么不同呢。 Bitmaps 更适合用于验证的大数据,比如签到,记录某用户是不是当天进行了签到,签到了多少天的时候。也就是说,不光需要记录数据,还需要对数据进行验证的时候使用Bitmaps。HyperLoglog则用于只记录的时候,比如访问的uv统计。
二,原理
基数计数 (cardinality counting)通常用来统计一个集合中不重复的元素个数,例如统计某个网站的UV,或者用户搜索网站的关键词数量。
HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
三,命令
// 将除了第一个参数以外的参数存储到以第一个参数为变量名的 HyperLogLog 结构中
PFADD key element [element ...]
//返回存储在 HyperLogLog 结构体的该变量的近似基数
PFCOUNT key [key ...]
//将多个 HyperLogLog 合并(merge)为一个 HyperLogLog , 合并后的 HyperLogLog 的基数接近于所有输入 HyperLogLog 的可见集合(observed set)的并集
PFMERGE destkey sourcekey [sourcekey ...]
评论区