分类:
编程软件 Java 中间件 Elasticsearch 前端开发 kafka 云计算大数据 Lua zookeeper PHP 网络与运维 项目构建管理 ActiveMQ 办公应用软件 Memcached RabbitMQ Sentinel Nacos

Redis HyperLogLog 基数统计详解

2019-04-11 21:57|来源: 网路

Redis HyperLogLog

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。


什么是基数?

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。


实例

以下实例演示了 HyperLogLog 的工作过程:

redis 127.0.0.1:6379> PFADD w3ckey "redis"
1) (integer) 1
redis 127.0.0.1:6379> PFADD w3ckey "mongodb"
1) (integer) 1
redis 127.0.0.1:6379> PFADD w3ckey "mysql"
1) (integer) 1
redis 127.0.0.1:6379> PFCOUNT w3ckey
(integer) 3



Redis HyperLogLog 命令

下表列出了 redis HyperLogLog 的基本命令:

序号 命令及描述
1 PFADD key element [element ...]
添加指定元素到 HyperLogLog 中。
2 PFCOUNT key [key ...]
返回给定 HyperLogLog 的基数估算值。
3 PFMERGE destkey sourcekey [sourcekey ...]
将多个 HyperLogLog 合并为一个 HyperLogLog

相关问答

更多

Redis Hyperloglog - PFCOUNT副作用(Redis Hyperloglog - PFCOUNT side effect)

HyperLogLog对象的标题如下: struct hllhdr { char magic[4]; /* "HYLL" */ uint8_t encoding; /* HLL_DENSE or HLL_SPARSE. */ uint8_t notused[3]; /* Reserved for future use, must be zero. */ uint8_t card[8]; /* Cached cardinality, little

Redis上的HyperLogLog实现无法识别(HyperLogLog Implementation on Redis Not Recognized)

发出r.execute_command("PFADD", "key", 1, 2, 3)以查看您的服务器是否支持该命令。 如果此命令运行正常,则问题出在redis-py 。 编辑 http://redis.io/commands/pfadd已添加到Redis 2.8.9中,您的版本比此版本旧。 您可以使用早期版本支持的http://redis.io/commands/sadd来完成您的工作。 检查此链接并尝试set命令。 他们计算成员的速度较慢,但具有确定性。 Issue a r.execute

交叉计数的数据结构(DataStructure for Intersection Counts)

检查使用MinHash扩充HyperLogLog 。 Check out augmenting HyperLogLog with MinHash.

HyperLogLog在redis有什么使用原理

Redis是一个开源的使用C语言编写、开源、支持网络、可基于内存亦可持久化的日志型、高性能的Key-Value数据库,并提供多种语言的API。   它通常被称为数据结构服务器,因为值(value)可以是 字符串(String)、哈希(Map)、 列表(list)、集合(sets) 和 有序集合(sorted sets)等类型。   Redis 与其他 key - value 缓存产品有以下三个特点:   Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

redis高并发时有多少命令没执行

Redis Pgmerge 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。 语法 redis Pgmerge 命令基本语法如下: redis 127.0.0.1:6379> PFMERGE destkey sourcekey [sourcekey ...] 可用版本 >= 2.8.9 返回值 返回 OK。 实例 redis 127.0.0.1:6379> PF

相关文章

更多

最近更新

更多