4.5 Redis之hyperloglog

1.简介

  • 基数统计的算法:在输入元素的数量或者体积非常大时,计算基数所需的空间总是固定的、并且是很小的。在Redis里面,每个hyperloglog键只需要花费12KB内存,就可以计算接近2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
  • 不返回输入的各个元素:hyperloglog只会根据输入元素来计算基数,而不会储存输入元素本身。
  • 误差:Redis中实现的HyperLogLog,只需要12K内存,在标准误差0.81%的前提下,能够统计2的64次方个数据,其本质上还是字符串。

2.API

  • 向hyperloglog添加元素

    pfadd key element
    
  • 计算hyperloglog的独立总数

    pfcount key
    
  • 合并多个hyperloglog

    pfcount key1 key2
    

3.内存消耗(百万独立用户)
(1).插入百万用户数据

elements = ""
key = "2016_05_01:unique:ids"
for i in 'seq 1 1000000'
do
	elements = "${elements} uuid-"${i}
	if [[ $((i%1000)) == 0 ]]
	then
		redis-cli pfadd ${key} ${elements}
		elements = ""
	fi
done

(2).统计

时间内存消耗
1天15KB
1个月450KB
1年15KB*365 = 5MB

4.使用经验

  • 是否能容忍错误(错误率大约是0.81%)
  • 是否需要单条数据(无法取出单条数据)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值