HyperLogLog-Redis中的基数统计算法

2023-10-30

1.基本概念

基数(cardinality),是指一个集合中不同元素的个数。例如集合:{1,2,3,4,5,2,3,9,7}, 这个集合有9个元素,但是2和3各出现了两次,

因此不重复的元素为1,2,3,4,5,9,7,所以这个集合的基数是7。

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的

数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费

12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

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

入的各个元素。

Hyper LogLog通过对一个输入数据流M,应用一个哈希函数设置h(M)来工作。这将产生一个S = h(M) of {0,1}^∞字符串的可观测结果。

通过分割哈希输入流成m个子字符串,并对每个子输入流保持m的值可观测 ,这就是相当一个新Hyper LogLog(一个子m就是一个新

的Hyper LogLog)。利用额外的观测值的平均值,产生一个计数器,其精度随着m的增长而提高,这只需要对输入集合中的每个元素

执行几步操作就可以完成。

2.算法框架

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HyperLogLog-Redis中的基数统计算法 的相关文章

  • 有没有办法在 ruby​​ 中重新定义 []=+

    我正在尝试编写一个简单的 DSL 针对 Redis 并且我想自己定义 I have def key val redis zadd name val key end 我想定义 def key val redis zincrby name va
  • 如何设置和获取Redis中存储的对象?

    我试图在 redis 中存储一个对象 当我获取该对象时 它似乎不起作用 I tried u User new u name blankman redis set test u x redis get test x name error 我想
  • 如何在Redis中进行持久化存储?

    关闭redis服务器后 使用set存储的值被破坏 在这里我找到了使用持久性存储的方法 有人帮助我 如何使用javascript实现这一点 我想将客户端的一些值存储在 redis 数据库中 并且必须在其他客户端中使用该值 您需要配置 Redi
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • Java 将字节转换为二进制安全字符串

    我有一些以字节为单位的数据 我想将它们放入Redis中 但是Redis只接受二进制安全字符串 而我的数据有一些二进制非安全字节 那么如何将这些字节转换为二进制安全字符串以便将它们保存到 Redis 中呢 Base64 对我有用 但它使数据更
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 创建 C++ Redis 模块 - “不导出 RedisModule_OnLoad() 符号”

    我在加载 Redis 模块时遇到一些问题 我只是复制来自的示例https redis io topics modules intro https redis io topics modules intro 但我把它剥下来了 include
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • 超出 Redis 连接/缓冲区大小限制

    在对我们的应用程序服务器进行压力测试时 我们从 Redis 中得到以下异常 ServiceStack Redis RedisException 无法连接到 redis host 6379 处的 redis 实例 gt System Net
  • 由于配置文件错误,无法启动 Redis 服务器

    我刚刚按照此处的说明安装了 Redis http redis io download http redis io download 当我运行 redis server redis conf 时出现以下错误 FATAL CONFIG FILE
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • 为什么单个 Redis 实例不是线程安全的?

    https github com xetorthio jedis wiki Getting started https github com xetorthio jedis wiki Getting started 在多线程环境中使用Jed
  • Redis 在键过期时更新排序集

    我有一个 Redis 服务器 其中包含一组键值对和一个排序集 提供这些键值对的键的索引 键值对可以进入 已完成 状态 此时需要在 1 小时后删除它们 这可以通过在键上设置到期时间来简单地实现 但从排序集中清除它们似乎更成问题 我可以有一个过
  • Web API 缓存 - 如何使用分布式缓存实现失效

    我有一个 API 目前不使用任何缓存 我确实有一个正在使用的中间件 它可以生成缓存标头 Cache Control Expires ETag Last Modified 使用https github com KevinDockx HttpC
  • 集合成员的 TTL

    Redis 是否可以不为特定键而是为集合的成员设置 TTL 生存时间 我正在使用 Redis 文档提出的标签结构 数据是简单的键值对 标签是包含与每个标签对应的键的集合 例如 gt SETEX id id 1 100 Lorem ipsum
  • ServiceStack PooledRedisClientManager 故障转移如何工作?

    根据 git commit 消息 ServiceStack 最近添加了故障转移支持 我最初认为这意味着我可以关闭我的一个 Redis 实例 并且我的池客户端管理器将优雅地处理故障转移并尝试与我的备用 Redis 实例之一连接 不幸的是 我的
  • JedisPoolConfig 不可分配给 GenericObjectPoolConfig

    我有一个基于 Spring 的 Java Web 应用程序托管在 Heroku 上 我正在尝试使用 Redis 实现来利用 Spring 缓存抽象 当服务器启动时 我收到一条错误消息 Type redis clients jedis Jed
  • memcache、redis 和 ehcache 作为分布式缓存框架的比较 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要做出的决定之一是在我的系统中使用什么缓存框架 有这么多可供选择 我目前正在研究 redis ehcache 和 memcached
  • Microsoft.Extensions.Caching.Redis 选择与 db0 不同的数据库

    一个关于了解使用哪个redis数据库以及如何配置它的问题 我有一个默认值ASP NET Core Web 应用程序和默认配置的本地redis服务器 含15个数据库 通过包管理控制台我已经安装了 Install Package Microso
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash

随机推荐

  • SuperSocket教程五:配置文件启动,配置多服务器示例

    为什么要通过配置启动 1 避免硬编码 SuperSocket提供了很多有用的配置选项 可以充分利用SuperSocket提供的工具 那么怎么通过配置启动 我最开始看文档都没搞懂有些地方 然后查了一下不懂的地方 最后解决问题 这篇博客是和上一
  • pwrite写操作——原子操作,不改变当前文件操作符位置,写入位置offset是一个相对于fd起始地址的偏移量

    意外发现 pwrite 函数是一个原子操作 现测试验证如下 1 2 pwrite相当于先调用lseek接着调用write 但又不完全是这样 3 1 pwrite是原子操作 定位和写操作在一个原子操作中完成 期间不可中断 但分开的lseek和
  • 接口自动化测试实战经验分享,测试用例也能自动生成

    作为测试 你可能会对以下场景感到似曾相识 开发改好的 BUG 反复横跳 版本兼容逻辑多 修复一个 BUG 触发了更多 BUG 上线时系统监控毫无异常 过段时间用户投诉某个页面无数据 改动祖传代码时如履薄冰 心智负担极重 为此本文提出一个自动
  • Kotlin常用的高阶函数(ForEach、Map、Flatmap、Fold、Reduce......)

    一 ForEach 类型于Java的传统的写法 package net println kotlin chapter5 builtins author wangdong description Kotlin常见的高阶函数 fun main
  • LLM-项目详解-Chinese-LLaMA-AIpaca(一):LLM+LoRa微调加速技术原理及基于PEFT的动手实践:一些思考和mt0-large+lora完整案例

    如何花费较少的算力成本来进行微调训练 十分重要 当前关于LLaMA Alpaca Instruct微调 LoRa微调等多个概念大家讲的很多 最近也在学习 也看到几个有趣的话题 主要参考于 https github com ymcui Chi
  • CompletableFuture使用案例

    最近遇到一个前端接口需要批量请求接口 担心超时 所以使用批量异步的请求方式 批量构造请求 for ProductInfoParam productInfoParam list CompletableFuture
  • 实战分享:一文读懂RS-232总线

    大家好 我是阿荣 感恩遇见 本文部分图文来源于网络 并经过整合 编辑和勘误 实战分享栏目将重点介绍嵌入式的基础知识 并融合一些实战经验 持续勘误和迭代 建议关注和收藏 WX同名 RS 232概述 RS 232标准接口 又称EIARS 232
  • php的MVC模式

    php的MVC模式 model 存放向数据库请求来的数据 view 存放组件 图片 页面模板html文件 controller 获取或改变model里的数据返回给页面渲染数据 1 根目录入口php文件index php 在此定义目录常量方便
  • (三)Refactor

    在实现线程池上个版本中 提交任务需要重写Task run 方法 获取结果会被阻塞直至任务完成 使用C 异步新标准解决上述问题 提交任务期望有如下简洁格式 auto res1 pool submitTask func 1 2 可以使用C 17
  • c++ 小型公司人员管理 类的继承和派生实战

    写在前面 希望这篇文章能对大家有一点点帮助 欢迎一起交流进步 谢谢大家的阅读 一 题目 3 小型公司人员管理 某小型公司有四类人员 总经理 技术人员 销售经理 推销员 设计一个基类employee派生出 manager 总经理 techni
  • 读取多波段的tif(利用GDAL)

    bmp的格式是RGBRGB 排列下来的 每个像素的三个分量靠在一起 描述完一个像素 接着描述下一个像素 tif的格式更多样 通常的格式也是BGRBGR 次序与bmp相反 排列下来的 但偶尔有一些tif文件采用RRRRRR GGGGG BBB
  • 银行核心系统

    文章来源与某位大神的力作 写的非常好 科目的地方首位科目号有待商榷 但总之看完后很多东西一目了然 银行核心系统入门简介 本文的目标读者是准备从事银行核心系统开发 维护的从业人员 请注意 是 准备 换句话说 可以理解为一份对科技人员 尤其是对
  • 【SpringBoot】DEMO:上传头像并把头像的路径存放到数据库

    SpringBoot DEMO 上传头像并把头像的路径存放到数据库 一 任务介绍 二 目录结构 三 功能实现 四 实现效果 五 大功告成 一 任务介绍 判断图片是否为空 不为空 把图片上传到服务器 把图片的路径写入数据库 二 目录结构 三
  • Python中的列表部件QListWidget详解

    Python中的列表部件QListWidget详解 QListWidget是Qt框架中的一个常用部件 用于显示列表数据 在Python中 我们可以使用PyQt库来创建和操作QListWidget部件 本文将详细介绍QListWidget的使
  • Svg画图

    一 Svg是什么 SVG 指可伸缩矢量图形 SVG 用来定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失 SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是
  • 主频计算-架构真题(二十三)

    某文件系统采用多级索引结构 若磁块大小为4K字节 每个块号需占4个字节 那么采用二级索引结构时的文件最大长度可占用 个物理块 1 1024 2 1024 1024 3 2048 2048 4 4096 4096 答案 B 解析 磁盘大小 块
  • 超详细:通过neo4j构建数电知识图谱

    将neo4j gt 连接mysql CALL apoc load jdbc 创建节点 ranker代表课程id name代表该学科名称 create n course name 数字电路与逻辑设计 ranker 4 return n 建立课
  • Gazebo载入模型问题汇总

    问题1 载入模型的时候零件之间的关节断开 gazebo载入一个四足机器人模型的时候 发现它的有些关节断开了 如下图这种 身子还在中间躺着 但是机器人的大腿已经不知道被谁砍了下来 右上角哪个红色大腿非常明显 原因及解决办法 这里由于我的joi
  • Metric评价指标-Perplexity语言模型

    欢迎关注知乎 世界是我改变的 知乎上的原文链接 一 原理介绍 在研究生实习时候就做过语言模型的任务 当时让求PPL值 当时只是调包 不求甚解 哈哈哈 当时也没想到现在会开发这个评价指标 那现在我来讲一下我对这个指标的了解 望各位大佬多多指教
  • HyperLogLog-Redis中的基数统计算法

    1 基本概念 基数 cardinality 是指一个集合中不同元素的个数 例如集合 1 2 3 4 5 2 3 9 7 这个集合有9个元素 但是2和3各出现了两次 因此不重复的元素为1 2 3 4 5 9 7 所以这个集合的基数是7 Red