Redis之HyperLogLog类型

HyperLogLog(基数统计)

什么是基数?
不相同的数叫做基数。


问题的引入:
在传统时期,如果你要计算一个网页的访问量,如何计算?做法是将用户的唯一标识存入一个set集合中,然后获取set的集合元素的大小。当集合元素量比较小的时候,效果还行,当用户量超大时,这个集合或者多个集合占用的储存量太大了。我们只不过想要个访问量这个数字而已,但却要存储这么多无效信息,不划算。

HyperLogLog不是集合,不会存储元素本身,而是添加的时候计数不重复元素的一种算法,不是redis独有的。当添加量非常大时,存在0.81%标准误差。HyperLogLog最大只占12KB内存,可以计算近264元素的基数。

如果你用集合去存264个元素,内存多少?可以自己算算。
假设存long型数字,一个long型8个字节,即8B,(264 * 8)/ (1024 * 1024 * 1024) = 237 G,再看看自己电脑几个G,根本无法存这么多。

HyperLogLog的应用场景:访问量,在线人数,搜索次数,注册人数,等待。

HyperLogLog命令只有三个:PFadd添加,PFcount获取基数,PFmerge合并


常用命令:

(1)添加基数:PFadd key element [element…]
在这里插入图片描述
返回值:基数发生改变返回1,未改变返回0。
当不指定元素,即PFadd key时,key不存在时创建一个空的key,返回1。


(2)获取基数:PFcount key [key…]
在这里插入图片描述


(3)基数合并:PFmerge destKey sourceKey [sourceKey…]

合并后的基数近似所有输入元素的基数。
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值