公司找人做的网站到现在还没出来,那个网站上可以找代加工的订单做,wordpress怎么做论坛,济南网站制作多少钱1. 介绍
Redis HyperLogLog 是 Redis 2.8.9 版本新增的数据类型#xff0c;是一种用于【统计基数】的数据集合类型#xff0c;基数统计就是指统计一个集合中不重复的元素个数。但要注意#xff0c;HyperLogLog 的统计规则是基于概率完成的#xff0c;不是非常准确#xf…1. 介绍
Redis HyperLogLog 是 Redis 2.8.9 版本新增的数据类型是一种用于【统计基数】的数据集合类型基数统计就是指统计一个集合中不重复的元素个数。但要注意HyperLogLog 的统计规则是基于概率完成的不是非常准确标准误算率是 0.81%。
所以简单来说 HyperLogLog 提供不准确的去重计数。
HyperLogLog 的优点是在输入元素的数量或者体积非常非常大时计算基数所需的内存空间总是固定的并且是很小的。
在 Redis 中每个 HyperLogLog 键只需要花费 12 KB 内存就可以计算接近 2^64 个不同元素的基数和元素越多就越耗费内存的 Set 和 Hash 类型相比HyperLogLog 就非常节省空间。
这是什么概念举个例子
用 Java 语言来说一般 long 类型占用 8 个字节而 1 字节有 8 位即1 byte 8 bit即 long 数据类型最大可以表示的数是2^63 - 1。对应上面的 2^64 个数假设此时有 2^63 - 1 这么多个数从 0 ~ 2^63-1按照 long 以及 1 k 1024 字节 的规则来计算内存总数就是(2^63-1)*8/1024K 这是很庞大的一个数存储空间远远超过 12 K而 HyperLogLog 却可以用 12K 就能统计完。
2. 内部实现
HyperLogLog 的实现涉及到很多数学问题太费脑子了搞不懂。
3. 常见命令
HyperLogLog 命令很少就三个。
# 添加指定元素到 HyperLogLog 中
PFADD key element [element ...]
# 返回给定 HyperLogLog 的基数估算值
PFCOUNT key [key ...]
# 将多个 HyperLogLog 合并为一个 HyperLogLog
PFMERGE destkey sourcekey [sourcekey ...]
4. 应用场景
4.1 百万级网页 UV 计数
Redis HyperLogLog 优势在于只需花费 12 KB 内存就可以计算接近 2^64 个元素的基数和元素越多就越耗费内存的 Set 和 Hash 类型相比HyperLogLog 就非常节省空间。
所以非常适合统计百万级以上的网页 UVUnique Vistor 独立访客衡量一个给定时间范围内访问网站的不同访客数量。 的场景。
在统计 UV 时你可以使用 PFADD 命令用于向 HyperLogLog 中添加新元素把访问页面的每个用户都添加到 HyperLogLog 中。
PFADD page1:uv user1 user2 user3 user4
接下来就可以用 PFCOUNT 命令直接获得 page1 的 UV 值了这个命令的作用就是返回 HyperLogLog 的统计结果。
PFCOUNT page:uv
不过有一点需要注意一下HyperLogLog 的统计规则是基于概率完成的所以它给出的统计结果是有一定误差的标准误算率是 0.81%。
这也就意味着你使用 HyperLogLog 统计的 UV 是 100 万但实际的 UV 可能是 101 万。虽然误差率不算大但是如果你需要准确统计结果的话最好还是继续使用 Set 或 Hash 类型。