Redis-HyperLogLog数据类型及其常用命令详解

1.Redis概述

在这里插入图片描述

2.HyperLogLog数据类型

HyperLogLog(HLL)是一种用于近似计算大数据集合中唯一元素数量(基数)的概率性数据结构。

  1. 概率数据结构

    • HyperLogLog 使用的是一种概率算法,它可以在极少的内存消耗下估算出一个集合的基数(唯一元素的数量)。
    • 与传统的集合或哈希表不同,它的内存消耗不随元素数量线性增加,而是固定在一个较小的大小。
  2. 空间效率

    • 每个 HyperLogLog 实例只需要固定大小的内存,通常为 12 KB,无论处理的数据规模有多大。这使得它在处理海量数据时依然能够高效运行。
  3. 近似计算

    • HyperLogLog 提供的基数估计并非精确值,而是一个接近真实值的近似。
    • 误差率通常为 0.81% 左右,这对于大数据场景中的统计分析是可以接受的。
  4. 快速计算

    • 添加元素到 HyperLogLog、计算基数以及合并不同 HyperLogLog 实例的操作通常是常数时间复杂度(O(1)),即使数据集非常大也能够快速完成。

3.常用命令

1. PFADD

在这里插入图片描述

语法

PFADD key element [element ...]

功能
向指定的 HyperLogLog 数据结构中添加一个或多个元素。如果元素已经存在于结构中,它不会重复添加。

返回值

  • 整数类型,具体是 01
    • 返回 1 表示 HyperLogLog 的内部数据结构发生了变化(即至少有一个新元素被添加)。
    • 返回 0 表示所有添加的元素已经存在,内部数据结构未发生变化。

示例

启动 Redis 客户端:

redis-cli
  1. 向 HyperLogLog 添加一个元素:
127.0.0.1:6379> PFADD myhll "element1"
(integer) 1
  1. 向 HyperLogLog 添加多个元素:
127.0.0.1:6379> PFADD myhll "element2" "element3" "element4"
(integer) 1
  1. 再次添加已经存在的元素:
127.0.0.1:6379> PFADD myhll "element1" "element2"
(integer) 0

在这里插入图片描述


2. PFCOUNT

在这里插入图片描述
PFCOUNT 获取指定 HyperLogLog 结构的基数估计值。

语法

PFCOUNT key [key ...]

功能

  • 返回给定 HyperLogLog 结构的基数估计值,可以同时输入多个 key 进行统计。

  • 获取 HyperLogLog 结构的基数估计值,用于统计唯一元素的数量。

  • HyperLogLog 提供的基数估计并非精确值,而是一个接近真实值的近似。

  • 误差率通常为 0.81% 左右,这对于大数据场景中的统计分析是可以接受的。
    在这里插入图片描述

返回值

  • 整数类型,表示给定 HyperLogLog 结构的基数估计值。

示例

HyperLogLog 结构 myhll 包含了一些元素,可以使用以下命令获取其基数估计值:

127.0.0.1:6379> PFCOUNT myhll
(integer) 1000

多个 HyperLogLog 结构,也可以同时获取它们的基数估计值:

127.0.0.1:6379> PFCOUNT myhll1 myhll2 myhll3
(integer) 2500

在这里插入图片描述


3.PFMERGE

在这里插入图片描述

这个命令可以非常有效地将多个集合中的唯一元素计数合并起来,而不会显著增加内存消耗。
在这里插入图片描述
语法

PFMERGE destkey sourcekey [sourcekey ...]

参数

  • destkey:目标 HyperLogLog 的键名。合并后的结果将存储在这个键中。
  • sourcekey:一个或多个源 HyperLogLog 的键名,这些 HyperLogLog 结构将被合并到 destkey 中。

功能

将一个或多个源 HyperLogLog 结构合并到一个目标 HyperLogLog 结构中。

返回值

  • 简单字符串回复,通常是 OK

示例

  1. 创建和添加元素到 HyperLogLog

    127.0.0.1:6379> PFADD hll1 "element1" "element2" "element3"
    (integer) 1127.0.0.1:6379> PFADD hll2 "element3" "element4" "element5"
    (integer) 1127.0.0.1:6379> PFADD hll3 "element5" "element6" "element7"
    (integer) 1
    
  2. 合并 HyperLogLog 结构

    127.0.0.1:6379> PFMERGE merged_hll hll1 hll2 hll3
    OK
    
  3. 获取合并后 HyperLogLog 的基数估计值

    127.0.0.1:6379> PFCOUNT merged_hll
    (integer) 7
    

使用 PFCOUNT 命令来获取合并后 merged_hll 的基数估计值,结果为 7,因为合并后的集合包含 7 个唯一元素(“element1” 到 “element7”)。


应用场景

  • 去重计数
    • 用于统计网站访问的唯一用户数、广告点击的唯一用户数等。
  • 大数据分析
    • 在处理日志数据、用户活动记录等大规模数据时,用于快速计算独立用户数量。
  • 实时数据处理
    • 在流数据处理、实时分析中,能够快速更新和查询唯一元素的数量,适用于实时监控和反作弊系统。

在这里插入图片描述


更多的命令在官网哦~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/858502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot2+Vue3开发博客管理系统

项目介绍 博客管理系统,可以帮助使用者管理自己的经验文章、学习心得、知识文章、技术文章,以及对文章进行分类,打标签等功能。便于日后的复习和回忆。 架构介绍 博客管理系统采用前后端分离模式进行开发。前端主要使用技术:Vu…

黑龙江等保测评的具体流程是怎样的

黑龙江等保测评的具体流程 黑龙江等保测评是根据《中华人民共和国网络安全法》及相关法律法规,对信息系统安全保护能力进行评估和验证的过程。以下是黑龙江等保测评的具体流程: 系统定级:根据业务、资产、安全技术、安全管理等方面的情况&am…

鸿蒙HarmonyOS服务卡片实战

引言 在现代开发中,服务卡片是不可或缺的一部分,比如音乐,天气类等应用,官网的介绍中写道:卡片让您便捷地预览服务信息,例如查看天气或日历日程等内容。您可将卡片添加到屏幕上,让这类信息触手…

[C++][设计模式][观察者模式]详细讲解

目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一1.FileSplitter.cpp2.MainForm.cpp 2.代码二1.FileSplitter.cpp2.MainForm.cpp 1.动机 在软件构建过程中,需要为某些对象建立一种“通知依赖关系” 一个对象(目标对象)的状态发生改变,所有的依赖对象…

2024.6.22刷题记录-力扣周赛402跟练记录(未完)

目录 一、跟练视频 二、3184. 构成整天的下标对数目 I 暴力 三、3185. 构成整天的下标对数目 II 不会,来自视频。 一、跟练视频 【值域打家劫舍 树状数组【力扣周赛 402】-哔哩哔哩】 https://b23.tv/iDc49pt 二、3184. 构成整天的下标对数目 I 暴力 class …

C语言 将“China”译成密码

将“China”译成密码,密码规律是:用原来的字母后面的第4个字母代替原来的字母。例如,字母“A”后面的第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。编译程序用付赋初值的方法使c1,c…

Clickhouse 的性能优化实践总结

文章目录 前言性能优化的原则数据结构优化内存优化磁盘优化网络优化CPU优化查询优化数据迁移优化 前言 ClickHouse是一个性能很强的OLAP数据库,性能强是建立在专业运维之上的,需要专业运维人员依据不同的业务需求对ClickHouse进行有针对性的优化。同一批…

9、PHP 实现调整数组顺序使奇数位于偶数前面

题目: 调整数组顺序使奇数位于偶数前面 描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于位于数组的后半部分,并保证奇数和奇数&#xff…

基于深度学习的旋转包围盒检测

基于深度学习的旋转包围盒检测 旋转包围盒检测是一种高级目标检测方法,旨在识别图像中目标的精确位置和方向。与传统的轴对齐矩形框(水平包围盒)不同,旋转包围盒(Rotated Bounding Box, RBB)允许检测框随目…

速盾:视频cdn和网站cdn的区别

在互联网的发展过程中,视频的重要性越来越被人们所重视,视频内容的传播和观看需求也越来越大。为了提供更好的用户体验和满足视频内容的高负载需求,加快视频的加载速度,视频CDN(Content Delivery Network,内…

一、企业级架构设计-archimate基础概念

目录 一、标准 二、实现工具 1、Archimate 1、Archimate 基本概念 1、通用元模型 2、结构关系 3、依赖关系 1、服务关系 2、访问关系 3、影响关系 1、影响方式 2、概念 3、关系线 4、案例 4、关联关系 4、动态、节点和其他关系 1、时间或因果关系 2、信息流 …

缓存层持久化

** 读缓存** 分布式缓存 先将所有的缓存数据集中存储在同一个地方,而非重复保存到各个服务器节点中,然后所有的服务器节点都从这个地方读取数据 使用MongoDB的公司最少,目前,Redis比Memcached更流行: (1&…

MySQL——Insert语句详解

语法: INSERT INTO 表名([字段名1,字段名2,字段名3])VALUES(值1),(值2),(值3), 注意事项: 字段和字段之间,使用英文逗号隔开 字段是可以省略的,但是后面的值必须一一对应&…

采集数据类型和方法

采集的类型: 命名实体:命名实体包括人名、地点、组织、时间表达式、数量等。这些实体通常对理解和分类文本内容至关重要。 关键词和短语:这些是文本中的核心概念,可能代表了主题或中心思想。 句子或段落:根据需求,可…

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 …

【深度学习】Position Wise 到底是什么,有什么用

1. 遇到的问题 今天在看 Transformers 的前生今世 的时候,又一次看到了 Position Wise ,经常看到但老是一知半解,故索性查了一下,发现网上的都没怎么细讲其缘由,有点差强人意,于是我又用咱们最喜欢的 GPT-…

Django 路由系统详解

Django 路由系统详解 引言 Django 是一个高级 Python Web 框架,它鼓励快速开发和干净、实用的设计。在 Django 中,路由系统是其核心组件之一,负责将用户的请求映射到相应的视图函数或类。本文将深入探讨 Django 的路由系统,包括其工作原理、配置方式以及高级功能。 目录…

vue2和vue3数据代理的区别

前言: vue2 的双向数据绑定是利⽤ES5的⼀个 API ,Object.defineProperty( )对数据进行劫持结合发布订阅模式的方式来实现的。 vue3 中使⽤了 ES6的Proxy代理对象,通过 reactive() 函数给每⼀个对象都包⼀层Proxy,通过 Proxy监听属…

【剖析】为什么说RBF神经网络的误差为0

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 机器学习中的模型非常的多,但如果要问有没有这样的一个模型,它的训练误差为0,那么就非RBF神经网络莫属了!下面我们来聊聊,为什么RBF神经网络的训练误差为0。…

WDF驱动开发-特定于KMDF的技术(一)

这部分的技术是一些零散的记录知识点,它们主要是在WDF框架中特定于KMDF的部分。 将内核模式驱动程序框架和非 PnP 驱动程序配合使用 如果要为不支持 即插即用 (PnP) 的设备编写驱动程序,则驱动程序必须: 在 WDF_DRIVER_CONFIG 结构的 Driv…