redis数据操作(Bitmaps、HyperLogLog)

Bitmaps

uid=0,5,11,15,19
使用Bitmap来保存用户是否访问过网站

hadoop:6379> setbit users_2020-10-24 0 1#将0位设置为1,0是偏移量
(integer) 0
hadoop:6379> setbit users_2020-10-24 5 1#将5位设置为1,5是偏移量
(integer) 0
hadoop:6379> setbit users_2020-10-24 11 1
(integer) 0
hadoop:6379> setbit users_2020-10-24 15 1
(integer) 0
hadoop:6379> setbit users_2020-10-24 19 1
(integer) 0

获取指定用户是否访问过网站

hadoop:6379> getBit users_2020-10-24 0
(integer) 1

统计2020-10-24这一天一共有多少用户访问了网站

hadoop:6379> bitcount users_2020-10-24 0 -1
(integer) 5

计算2020-10-24与2020-10-25的所有访问网站的用户

hadoop:6379> setbit users_2020-10-25 0 1
(integer) 0
hadoop:6379> setbit users_2020-10-25 6 1
(integer) 0
hadoop:6379> setbit users_2020-10-25 12 1
(integer) 0

取or操作

hadoop:6379> bitop or users_or_2020-10-24_25 users_2020-10-24 users_2020-10-25
(integer) 3
  • bitop operate destKey key1 [key2..]对指定key按位进行交、并、异或操作,并将结果保存到destKey中。
    and:交
    or:并
    not:非
    xor:异或

取数量

  • bitcount key [start end]统计指定key中1的数量。
hadoop:6379> bitcount users_or_2020-10-24_25 0 -1
(integer) 7

小结:

  • Bitmap存储的值只能是0或者1,是信息的状态位统计
  • 理解Bitmaps:就是一个存储0、1的一维数组
  • 操作Bitmaps的时候,必须要带上一个offset(偏移量)

HyperLogLog

求某个网站的uv值

#1.添加数据
hadoop:6379> pfadd taobao:uv:2020-10-24 1
(integer) 1
hadoop:6379> pfadd taobao:uv:2020-10-24 2
(integer) 1
hadoop:6379> pfadd taobao:uv:2020-10-24 1
(integer) 0

获取uv的值

#2.统计数据
hadoop:6379> pfcount taobao:uv:2020-10-24
(integer) 2

小结:

  • 只用来做一些去重的、大数据量的统计(uv)
  • 限制:HyperLogLog结构存在一定的误差,误差很小,0.81%。所以它不适合对精确度要求特别高的统计。这种操作,对精确度要求没那么高,可以使用该结构
  • HyperLogLog结构不存储数据,只记录数据量。针对uv场景,它为了节省空间资源,只会存储数据经过算法计算后的基数值,基于基数值来进行统计的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小刘新鲜事儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值