Redis数据类型--HyperLogLog类型详解及应用

数据结构

Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。

Hyperloglog

概述:Hyperloglog数据类型是Redis 2.8.9版本引入的,是用来做数据基数计算的,因为做基数计算,不保存原始数据,故占用内存很少,但有一定的误差,标准是误差0.81%,适用于对数据准确度要求不是函告的场景。

什么是基数?
基数就是元素不重复的个数,比如有数据集合{1,2,4,2,5,6,5},去重后{1,2,4,5,6},所以他的基数是5。
Redis 计算基数一般有三种方式,分别是使用 hashmap、bitmap 和 hyperloglog,hashmap、bitmap在数据量非常大时,所消耗的内存会大大增加,但是 hyperloglog 则不会,hyperloglog一个key最多占用12K空间。

Hyperloglog常用命令:

命令描述
pfadd key element添加元素到Hyperloglog中
pfcount key返回Hyperloglog的基数值
pfmerge destkey sourcekey [sourcekey …]将多个 HyperLogLog 合并到一个HyperLogLog,sourcekey [sourcekey …]多个key, 结果保存在desKey中

Hyperloglog的特点:

  • 只做基数计算,不记录原数据。
  • 内存占用很小,一个key最多占用12K空间(因为不存储原始数据)。
  • 提供不精装的基数计算,标准是误差0.81%。

Hyperloglog的应用场景:

  • 统计网站注册IP数。
  • 统计每日访问IP数。
  • 统计页面实时UV PV数。
  • 统计在线人数。

总结:Hyperloglog在实际项目中,使用不是很多,其本身就有误差,在数量级不够的场景,基本不会使用,但是可以容忍一定误差且数据量非常大的时候,还是十分有优势的,毕竟其内存占用小。

如有不正确的地方请各位指出纠正。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值