redis的HyperLogLogs详细介绍

Redis的HyperLogLogs是一种概率数据结构,用于估计集合中的元素个数,即基数。即使存储了超大数据(超过2^64的基数)的集合,HyperLogLogs也只需要12KB的内存,所有这使得其非常适合做大规模数据的去重计数。

HyperLogLogs提供的主要命令有:

  1. **PFADD key element [element ...]**:添加指定元素到HyperLogLog中。

  2. **PFCOUNT key [key ...]**:返回给定HyperLogLog中元素的近似数量。

  3. **PFMERGE destkey sourcekey [sourcekey ...]**:合并多个HyperLogLog,将合并后的HyperLogLog存储到新的key中。

其实例应用包括用户注册 IP 统计,不同搜索关键词被搜索的次数,每天访问网站的独立用户等等。需要注意的是,由于 HyperLogLogs 是概率性的数据结构,所以其返回的结果是近似值)。

例如:

# 添加元素
redis> PFADD hll foo bar zap
(integer) 1
redis> PFADD hll zap zap zap
(integer) 0
redis> PFADD hll foo bar
(integer) 0
redis> PFCOUNT hll
(integer) 3# 合并元素
redis> PFADD hll2 a b c d e f g
(integer) 1
redis> PFMERGE hll3 hll hll2
OK
redis> PFCOUNT hll3
(integer) 10

 Java示例:

在 Java 中,我们可以使用 Jedis,一个流行的 Redis 客户端,来进行 HyperLogLogs 操作。下面是一些例子:

import redis.clients.jedis.Jedis;public class Test {public static void main(String[] args) {// 连接到 Redis 服务器Jedis jedis = new Jedis("localhost");System.out.println("连接成功");// 使用 PFADD 命令添加元素jedis.pfadd("hll", "foo", "bar", "zap");// 使用 PFCOUNT 命令获取基数(即集合中元素个数的估计值)long cardinality = jedis.pfcount("hll");System.out.println("hll 的基数为: " + cardinality);// 创建另一个 HyperLogLogs 并添加元素jedis.pfadd("hll2", "a", "b", "c", "d", "e", "f", "g");// 使用 PFMERGE 命令将 hll 和 hll2 合并到 hll3jedis.pfmerge("hll3", "hll", "hll2");// 获取合并后的 hll3 的基数long mergedCardinality = jedis.pfcount("hll3");System.out.println("hll3 的基数为: " + mergedCardinality);jedis.close();}
}

在这个示例中,我们首先创建一个叫做 "hll" 的 HyperLogLogs,并添加了一些元素。然后我们获取并打印了 "hll" 的近似基数。然后我们创建了一个另外的 HyperLogLogs "hll2" 并添加了一些元素。接着,我们使用 PFMERGE 命令将 "hll" 和 "hll2" 合并到新的 HyperLogLogs "hll3" 中,并获取并打印了 "hll3" 的基数。

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

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

相关文章

MySQL | 如何使用mysqldumpslow命令进行SQL慢查询分析?

关注WX:CodingTechWork 介绍 启用慢查询日志 编辑 MySQL 配置文件:打开 MySQL 的配置文件(通常是 my.cnf 或 my.ini)。 启用慢查询日志:找到以下配置项并进行设置: slow_query_log 1 # 启用…

爱普生语音芯片的特点与应用市场

随着物联网与智能家居的普及,越来越多的电子产品有了语音播报的需求。但是很多客户没有类似的开发经验或者他们的产品内部只能承载一个蜂鸣器。这样的情况下要如何实现快速的产品升级呢?下面让我们来看一下差普生语音芯片是如果帮助客户的。目前爱普生语音芯片分为…

Redis 的主从复制、哨兵和cluster集群

目录 一. Redis 主从复制 1. 介绍 2. 作用 3. 流程 4. 搭建 Redis 主从复制 安装redis 修改 master 的Redis配置文件 修改 slave 的Redis配置文件 验证主从效果 二. Redis 哨兵模式 1. 介绍 2. 原理 3. 哨兵模式的作用 4. 工作流程 4.1 故障转移机制 4.2 主节…

记录一次内网渗透过程

0x01 前言: 一切以学习为主,记录一次小小的攻击过程 本次是通过外网漏洞撕开的口子,主要通过一下方式 拿到了目标资产 nday扫一扫 弱口令爆一爆 上传接口找一找 后台上传找一找 数据库弱口令 关注新day,有了立马在资产里面…

K8s学习三(Pod与探针)

深入学习Pod Pod配置文件 写一个自己的配置文件,nginx-po.yaml apiVersion: v1 #api文档版本 kind: Pod #资源类型对象,也可以配置为像Development,StatefulSet这一类的对象 metadata: # Pod相关的元数据,用于描述Pod的数据name: nginx-po…

深度比较Vue 3.0中的computed和watch属性用法与最佳实践

摘要:在Vue 3.0中,computed和watch属性是用于处理数据逻辑的重要工具。本文将详细对比这两个属性的工作原理、适用场景以及使用时的注意事项,旨在帮助开发者更有效地选择和使用它们。 一、computed属性 computed属性是Vue 3.0中用于计算数据…

【随笔】Git 高级篇 -- 相对引用2 HEAD~n(十三)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

D. Constructing the Array Codeforces Round 642 (Div. 3)

题目链接:Problem - 1353D - Codeforceshttps://codeforces.com/problemset/problem/1353/D 题目大意: 往空的数组里从1~n填数字,每次填最长的空区间的中间位置(位置向下取整)。 思路: 用二分判断放每一个数…

【WPF应用32】WPF中的DataGrid控件详解与示例

在WPF(Windows Presentation Foundation)开发中,DataGrid控件是一个强大的数据绑定工具,它以表格的形式展示数据,并支持复杂的编辑、排序、过滤和分组等操作。在本文中,我们将详细介绍DataGrid控件的功能、…

【信贷后台管理之(五)】

文章目录 目录结构一、面包屑组件封装二、退出登录接口联调三、申请列表的菜单路由3.1 路由创建,表格编写3.2 列表接口调用3.3 出生日期转变3.4 申请状态3.5 申请列表的操作3.5.1 编辑删除提交操作3.5.2 禁用状态3.5.3 操作接口3.5.4 搜索查询3.5.5 申请列表分页功能…

探索Python爬虫:解析网页数据的神奇之旅

在当今数字化时代,信息的获取变得比以往任何时候都更加便捷。然而,即使在互联网上,获取数据也需要通过正确的工具和技术。Python爬虫就是这样一种强大的工具,它可以让我们轻松地从互联网上收集数据,并将其转化为有用的…

DFS-0与异或问题,有奖问答,飞机降落

代码和解析 #include<bits/stdc.h> using namespace std; int a[5][5]{{1,0,1,0,1}}; //记录图中圆圈内的值&#xff0c;并初始化第1行 int gate[11]; //记录10个逻辑门的一种排列 int ans; //答案 int logic(int x, int y, int op){…

vue中的treeselect下拉框显示不全的解决办法

:appendToBody“true” z-index“9000” 如图&#xff1a;页面中显示的下拉框信息展示不全&#xff0c;就看不见了&#xff0c;也没有滚动条 解决办法&#xff1a;在代码中添加属性【:appendToBody“true” z-index“9000”】 z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺…

数据是一维数据,利用tensorflow深度学习框架,写一个带自注意力机制的卷积神经网络,并进行训练

下面是一个使用TensorFlow框架的带有自注意力机制的卷积神经网络&#xff08;Self-Attention Convolutional Neural Network&#xff09;的示例代码&#xff0c;包括数据处理、模型定义和训练过程&#xff1a; import tensorflow as tf from tensorflow.keras.layers import C…

C++ 动态字符串String的介绍及经典用法展示

std::string: 在C中&#xff0c;std::string是标准模板库&#xff08;STL&#xff09;中的一个类&#xff0c;用于表示和操作字符串。std::string提供了丰富的功能来处理文本数据&#xff0c;包括字符串的创建、修改、搜索、比较和转换等操作。 std::string的特点&#xff1a…

Redis: 持久化

文章目录 一、RDB持久化1、概念2、生成、载入RDB文件3、执行时机&#xff08;1&#xff09; 执行save命令&#xff08;2&#xff09;执行bgsave命令&#xff08;3&#xff09;Redis停机时&#xff08;4&#xff09;触发RDB条件 4、bgsave原理5、小结 二、AOF持久化1、概念2、AO…

蓝桥杯刷题-14-更小的数-区间DP⭐

蓝桥杯2023年第十四届省赛真题-更小的数 //区间DP #include <iostream> #include<bits/stdc.h> #define int long long using namespace std; const int N5e310; int f[N][N]; void solve(){string s;cin>>s;int ans0;for(int len2;len<s.size();len){for…

Linux从入门到精通 --- 3.用户、权限

文章目录 第三章&#xff1a;3.1 root用户3.1.1 su3.1.2 exit3.1.3 sudo 3.2 用户和用户组3.2.1 用户组管理创建用户组删除用户组 3.2.2 用户管理创建用户删除用户查看用户所属组修改用户所属组 3.2.3 getent一&#xff1a;二&#xff1a; 3.3 查看权限控制信息3.3.1 认知权限信…

zdpdjango_argonadmin使用Django开发一个美观的后台管理系统

初始代码 安装依赖 pip install -r requirements.txt生成管理员账户 迁移模型&#xff1a; python manage.py makemigrations python manage.py migrate创建超级用户&#xff1a; python manage.py createsuperuser启动服务 python manage.py runserver浏览器访问&#xf…

高项-案例分析练习(成本管理)

题目来源&#xff1a;信管网 案例一 某企业承接了某政府部门的系统集成项目&#xff0c;项目投标费用为5万元&#xff0c;预计每个子项目开发完成后的维护成本为50万元&#xff0c;项目初步的WBS分解结构如图所示。 题目一 【问题1】&#xff08;2分&#xff09; 假如估算出子…