Redis 系列10--Redis HyperLogLog

上一篇:Redis 系列09--Redis BitMap_fengxianaa的博客-CSDN博客

1. UV 和 PV

  • UV:全称unique visitor,也叫独立访客量,是指访问网页的自然人。一天中一个用户访问多次,只记录一次
  • PV:全称page view,页面点击量,用户多次访问一个页面,记录多次 。

2. 概念

HyperLogLog 是一种概率算法,用于基数统计,只会根据输入元素来计算数量,而不会储存输入元素本身,底层是 string 结构,单个HyperLogLog的内存永远小于16kb,因为内存小,所以计算有小于0.81%的误差。

3. 主要命令

  • pfadd:将元素参数添加到 HyperLogLog 数据结构中,有一个元素添加成功就返回 1, 否则返回 0
  • pfcount:返回基数估算值
  • pfmerge:将多个 HyperLogLog 合并为一个,返回OK
    • 下图,将 hll 和 hll2 合并到 hll 中

3. java

执行代码前,先看看内存使用情况

@Test
public void testHyperLogLog(){
    String[] values = new String[1000000];
    for(int i =0;i<1000000;i++){
        values[i] = "user_" + i;
    }
    // 添加
    stringRedisTemplate.opsForHyperLogLog().add("hyper",values);

    //统计
    Long hyper = stringRedisTemplate.opsForHyperLogLog().size("hyper");
    System.out.println(hyper);
}

结果

然后再看看内存使用

889424 - 873600 = 15824,小于 16kb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值