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
转自:http://www.redis.net.cn/tutorial/3513.html
分享到:
相关推荐
08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar...
require 'hyperloglog-redis' counter = HyperLogLog::Counter.new(Redis.new) ['john', 'paul', 'george', 'ringo', 'john', 'paul'].each do |beatle| counter.add('beatles', beatle) end puts "There are ...
本文将深入探讨一种基于2位HyperLogLog的优化版本——wyhll,它由王翼提出,相比Redis的HyperLogLog,具有更高的精度和更快的速度。 HyperLogLog算法的核心思想是使用概率统计方法来估算集合的基数。它通过哈希函数...
wyHLL:WangYi的3位HyperLogLog
在Redis中,HyperLogLog是一种特殊的数据结构,用于估算集合中的唯一元素数量,而无需存储每个元素的具体信息。这使得HyperLogLog在处理大数据集时非常高效,内存占用极低。 HyperLogLog算法的核心思想是利用概率...
Redis是一个开源的内存数据库,属于NoSQL数据库的一种。它以其高性能、支持丰富的数据结构、持久化特性、复制、集群以及发布/订阅等特性而闻名。Redis是一个键值存储系统,每个键都对应一个值,这个值可以是字符串、...
什么是 Redis HyperLogLog 数据结构?可以用来解决什么问题? - **定义**:HyperLogLog 是一种概率型数据结构,用于估算不同集合的基数。 - **解决问题**:在内存有限的情况下,快速估计不同集合的元素数量。 ###...
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的 只计算基数个数,但不存储元素本身 pfadd key element:...
Redis 16.HyperLogLog.flv
redis帮助文档之hyperloglog
以上就是关于"尚硅谷周阳Redis笔记"的一些主要知识点,包括Redis的基本概念、数据类型、持久化、事务、复制、发布订阅、布隆过滤器、HyperLogLog以及GEO定位等功能的介绍。这个笔记资源对于学习和理解Redis的使用...
谈下你对 Redis 的了解? 1)Redis是一种基于键值对的NoSQL数据库(非关系型数据库);是一个key-value存储系统 2)高性能、可靠性 Redis将数据存储在内存中,读写性能高;Redis提供了 RDB和AOF持久化,可将内存...
- Redis的数据类型:字符串、哈希、列表、集合、有序集合,以及HyperLogLog和地理空间索引。 - Redis持久化:RDB快照和AOF追加日志两种方式,确保数据在服务器重启或故障后不丢失。 - Redis事务:通过`MULTI`、`EXEC...
Redis 5.0引入了HyperLogLog数据结构,用于估算集合中唯一元素的数量,占用空间非常小。此外,Bitmaps也得到了加强,提供了更多的操作,适合进行大数据分析。 8. **备份与恢复**: 考虑到集群环境,Redis 5.0改进...
HyperLogLog数据结构提供了高效的大规模唯一元素计数;还有新的Stream ID机制,增强了消息队列的功能。 **3. 安装与配置** 在Windows 64位系统上,提供的`redis.windows.conf`是Redis的主要配置文件,用户可以通过...
* HyperLoglog:HyperLoglog是Redis的一种数据类型,使用pfadd命令添加多个元素,pfcount命令统计基数估算。 * Geo:Geo是Redis的一种数据类型,使用geoadd命令添加地理位置,geopos命令获取地理位置。 Redis是一个...
5. **HyperLogLog**:这是一个高效的基数估算数据结构,用于计算不同元素的数量,占用存储空间极小。 6. **Improved Sorted Sets**:优化了有序集合的操作,包括ZINTERSTORE和ZUNIONSTORE等命令,提高了性能。 三、...
Redis 是一个开源的,基于键值对的数据存储系统,它被广泛用于缓存、数据库以及消息中间件等场景。这个压缩包"redis-3.2.2.gem"包含的是Redis 3.2.2版本的源代码或者安装包,主要用于在Ruby环境中安装和使用Redis。...
│ 10.Redis 中的 HyperLogLog.mp4 │ 11.布隆过滤器[问题场景].mp4 │ 12.布隆过滤器[概念介绍].mp4 │ 13.布隆过滤器[原理介绍].mp4 │ 14.布隆过滤器[安装与启动].mp4 │ 15.布隆过滤器[基本用法].mp4 │ ...
7. HyperLogLog:概率性数据结构,用于估算不同元素的数量,节省空间。 8. Bitmap:位图,利用二进制位进行标记和统计,适用于用户在线状态追踪等场景。 【Redis持久化】 为了防止数据丢失,Redis提供了两种持久化...