上一篇: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 中
- 下图,将 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