Redis 基数 Hyperloglog 用于计不重复数量

2022-01-19 14:22:16 浏览数 (1)

Redis支持Hyperloglog 是在2.8.9版本之后,之前的版本不支持! 再次强调:用于计算不重复元素的数量,不可打印元素

Hyperloglog 存储基数。但什么是基数?

A {1,3,5,7,9} B {1,3,3,5,7}

其中A就是基数,B有重复元素就不是基数

Hyperloglog在数据了很大的时候,可接受误差!一般用于网站UV,就是用户数量统计!

基数:说白了就是不重复的元素

好处

占用内存是固定的,只需要12KB内存!可存储2的64次方的元素。不管存多少个(数量在2的64次方内),都是12KB。

Hyperloglog相关命令

  • PFADD :添加一个或多个元素到某个key中 参数:key 元素…
  • PFCOUNT :获取某个key 或多个key 元素数量 参数:key…
  • PFMERGE :合并多个分支 参数:newkey oldkey1 oldkey2 …

实验:redis-cli 添加元素 查询数量 合并元素

代码语言:javascript复制
# 添加元素 a - k 到mykey1 (一共 11 个)
pfadd mykey1 a b c d e f g h i j k


# 统计mykey1元素数量
pfcount mykey1

# 添加元素 k - n 到mykey2 (一共 4 个)
pfadd mykey2 k l m n

# 合并mykey1、mykey2为mykey3
pfmerge mykey3 mykey1 mykey2

# 输出mykey3的数量 (因为存储的是基数形式,不会重复,故 k 只计算一次)
pfcount mykey3

注意,没有删除元素

特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

0 人点赞