redis使用场景之HyperLogLog---应用于独立信息统计

如果我们统计不重复数据的数量,比如统计独立UV,我们会有如下方案:

原始方案:set

存储每个用户的id(字符串)

改进方案:bitmaps

存储每个用户状态(bit)

全新的方案:HyperLogLog

基数

首先我们来认识一下基数

{1,3,5,7,5,7,8}          基数集{1,3,5,7,8}            基数:5

Hyperloglog类型的基本操作

  • 添加数据
pfadd key element [element...]
  • 统计数据
pfcount key [key...]
  • 合并数据
pfmerge destkey sourcekey [sourcekey...]

操作如下:

         

h11为key,随便起,001,002代表用户id,或者可以放ip地址、人名等都可以

相关说明

  • 用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据
  • 核心是基数估算算法,最终数值存在一定误差
  • 误差范围:基数估计得结果是一个带有0.81%标准错误的近似值
  • 耗空间极小,每个hyperloglog key占用了12k的内存用于标记基数
  • pfadd命令不是一次性分配12k内存使用,会随着基数的增加内存逐渐增大
  • pfmerge命令合并后占用的存储空间为12k,无论合并之前数据是多少

一般使用场景

统计注册 IP 数
统计每日访问 IP 数
统计页面实时 UV 数
统计在线用户数
统计用户每天搜索不同词条的个数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值