Redis中的HyperLogLog和bitMaps的学习

1:HyperLogLog
假如我们需要统计网站的访问的用户数,相同的用户多次访问不多次计入。如果我们用set集合它还会保留用户的账号等没有用的信息,因为我们只需要直到有多少人即可,没必要直到具体每个人的id,所以用其他的数据类型会浪费大量的内存,这个时候我们就可以使用这个HyperLogLog结构,但是用这个结构来统计会有一定的误差,约为0.81%的误差。如果要求不高就可以用这个结构。
有三个命令,都是以PF开头的。

pfadd:添加元素
127.0.0.1:6379> pfadd myHyper 1 2 3 4 5 6
(integer) 1
127.0.0.1:6379> pfadd myHyper1 5 6 7 8 9
(integer) 1
************************************************************************
pfcount key:统计元素的个数。
127.0.0.1:6379> pfcount myHyper
(integer) 6
127.0.0.1:6379> pfcount myHyper2
(integer) 0
127.0.0.1:6379> pfcount myHyper1
(integer) 5
************************************************************************
pfmerge key key1 ..:将多个HyperLogLog合并到另一个里面,可以统计次数。不包含重复的元素。
127.0.0.1:6379> pfmerge myHyper2 myHyper myHyper1
OK
127.0.0.1:6379> pfcount myHyper2
(integer) 9

2:bitMap
bitMap是一个位图,每一位都能记录两种状态,0或者1,我们可以用这种数据结构来统计员工一年365天的打卡次数。
有三个命令:

setbit key index 0/1:设置某一位的值
127.0.0.1:6379> setbit lisi 0 1
(integer) 0
127.0.0.1:6379> setbit lisi 1 1
(integer) 0
127.0.0.1:6379> setbit lisi 2 1
(integer) 0
127.0.0.1:6379> setbit lisi 3 0
(integer) 0
127.0.0.1:6379> setbit lisi 4 1
(integer) 0
127.0.0.1:6379> setbit lisi 5 0
(integer) 0
127.0.0.1:6379> setbit lisi 6 0
(integer) 0
************************************************************************
get key index:获取某一位的值
127.0.0.1:6379> getbit lisi 2
(integer) 1
127.0.0.1:6379> getbit lisi 3
(integer) 0
127.0.0.1:6379> getbit lisi 5
(integer) 0
127.0.0.1:6379> getbit lisi 52
(integer) 0
************************************************************************
bitcount key:获取key中1的总个数
127.0.0.1:6379> bitcount lisi
(integer) 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海冥鱼未眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值