Redis 概率相关的数据类型
Redis 概率相关的数据类型HyperLogLogBloom filter 布隆过滤器Cuckoo filter 布谷鸟过滤器Count-min sketchTOPKt-digest参考HyperLogLog估算集合中唯一值的个数不精确的去重计数标准误差为 0.81%最多占用 12 KB 的空间。原理基于伯努利实验抛硬币想要连续 K 次均为反面则需要尝试 N 次实验。N 和 K 的关系为 N 2K。HyperLogLog 将值 hash 为数字记录最低位连续 0 的最大数量作为 K进而估计出唯一值的个数 N。为了避免极端值的影响使用了 214 16384 个桶然后取调和平均数。一共 16384 个桶每个桶用 6bit 记录最大连续数空间为 16384 * 6 / 8 12288byte 12kb。Bloom filter 布隆过滤器判断某个元素是否存在于某个集合中可能会误判。如果返回不存在则值一定不存在如果返回存在则值可能存在也可能不存在。添加的原理对值使用 N 个 hash 函数得到 N 个 hash 值hash 值对 bitmap 长度取模后将 bitmap 的 N 个位置设置为 1。判断是否存在的原理使用同样的方式 hash 取模后判断 bitmap 的 N 个位置如果有位置是 0则肯定不存在如果都为 1 则可能存在。创建 Bloom filter 时可以指定误报率、预期容量、扩展因子。当容量达到上限时会自动创建子 Bloom filter容量 当前预期容量 * 扩展因子。子过滤器会增加查询时的延迟因为若一个子过滤器返回不存在会继续检查下一个过滤器。Cuckoo filter 布谷鸟过滤器与 Bloom filter 一样用于判断某个元素是否存在于某个集合中也可能会误判。如果返回不存在则值一定不存在如果返回存在则值可能存在也可能不存在。Bloom filter 不支持删除想要删除元素必须重建。而 Cuckoo filter 支持删除。Count-min sketch估计集合中某个元素出现的频率。可能高估但绝不会低估。更新的原理有w * d的二维数组且有 d 个 hash 函数执行update(element, count)时使用d个 hash 函数对element进行 hash 得到 d 个 hash 值然后分别对w取模得到 d 个数组下标index然后将 d 个数组对应index位置的值累加上count。index_1 hash_1(element) % w index_2 hash_2(element) % w ... index_d hash_d(element) % w arr_1[index_1]count arr_2[index_2]count ... arr_d[index_d]count查询频率的原理按照上述步骤得到 d 个数组下标后分别获取数组对应位置的值后再取最小值。index_1 hash_1(element) % w index_2 hash_2(element) % w ... index_d hash_d(element) % w res min(arr_1[index_1], arr_2[index_2],..., arr_d[index_d])取最小值的原因多个不同的元素可能发生 hash 碰撞导致该位置的计数是多个元素的总和。一个元素在 d 个数组中计数的最小值是最接近真实值的一个。TOPK估算数据流中出现频率最高的 K 个元素。原理基于 HeavyKeepers 算法使用了最小堆和指数衰减计数策略。由一个最小堆和二维数组构成最小堆负责实时维护 topk二维数组负责统计元素出现的频率与 Count-min sketch简称 CMS 的操作类似区别在于 CMS 只存储了 count而 TOPK 同时存储了元素的 fingerprint 和 count。在添加元素时 CMS 是直接在 count 上累加而 TOPK 是有条件的。如果桶为空则直接写入 fingerprint、count1如果新元素的 fingerprint 与桶中的 fingerprint 相等则 count如果 fingerprint 不一致说明发生了哈希冲突。根据 P b−count(b1, 通常取 1.08) 计算出衰减概率 P然后生成一个 (0, 1) 的随机数 R。如果 R P则桶中的 count–如果此时 count 0 则 fingerprint 不变否则将 fingerprint 更新为新元素的 fingerprintcount 设为 1.如果 R P则桶保持不变。衰减概率 P 是根据 count 计算的count 越大 P 就越小。频率低的元素很快就衰减到 0而频率高的元素则不容易衰减。t-digest估算数据流的百分位数比如估算指定百分位的值估算某个值所处的百分位估算指定排名的值估算某个值的排名计算修剪平均数去除数据两端特定比例的极端值后计算剩余数据的均值。参考Probabilistic | Docs热点数据检测 HeavyKeeper在高并发的场景中热点数据一直是我们需要关注的问题。如何去衡量热点数据是关键。这篇文 - 掘金

相关新闻

USB主机控制器原理与MSPM0实战:事务处理、调度与寄存器配置详解

USB主机控制器原理与MSPM0实战:事务处理、调度与寄存器配置详解

1. 深入理解USB主机控制器:从总线仲裁到数据搬运搞了这么多年嵌入式,USB这块骨头算是啃得比较透了。今天咱们不聊那些虚的协议栈,就扎扎实实把USB主机控制器(Host Controller)里最核心的几件事掰扯清楚——事务怎么处理…

2026/7/24 2:56:17 阅读更多 →
嵌入式 C 中面向对象回调注册模式:用结构体函数指针实现可插拔驱动框架的工程方案

嵌入式 C 中面向对象回调注册模式:用结构体函数指针实现可插拔驱动框架的工程方案

嵌入式 C 中面向对象回调注册模式:用结构体函数指针实现可插拔驱动框架的工程方案 一、引言 嵌入式 C 项目中,硬件外设驱动(UART、SPI、I2C、CAN)通常与业务逻辑紧密耦合,导致平台迁移(如从 STM32F4 切换到…

2026/7/24 2:56:17 阅读更多 →
腾讯AI双螺旋战略:游戏与社交的智能融合

腾讯AI双螺旋战略:游戏与社交的智能融合

1. 腾讯AI战略的底层逻辑解析2026年对于腾讯而言将是AI技术全面渗透业务场景的关键节点。作为拥有微信、QQ两大国民级社交产品及全球最大游戏业务的科技巨头,腾讯的AI布局始终围绕"连接"与"内容"两大核心能力展开。从技术架构来看,其…

2026/7/24 2:56:17 阅读更多 →

最新新闻

企业内网单域环境搭建与Active Directory部署指南

企业内网单域环境搭建与Active Directory部署指南

1. 项目概述在企业IT基础架构建设中,内网域环境的搭建是构建统一身份认证和集中管理的基础工程。单域搭建作为最基础的Active Directory部署方案,特别适合中小型组织或分支机构使用。我曾在多个200-500人规模的企业中实施过此类项目,发现合理…

2026/7/24 3:08:20 阅读更多 →
强化学习核心算法与应用实践解析

强化学习核心算法与应用实践解析

1. 强化学习基础概念解析强化学习(Reinforcement Learning)作为机器学习三大分支之一,其核心思想来源于行为心理学中的"试错学习"理论。与监督学习需要标注数据不同,RL智能体通过与环境交互获得的奖励信号来调整策略&am…

2026/7/24 3:08:20 阅读更多 →
2026年GEO服务商技术评测TOP10选型参考

2026年GEO服务商技术评测TOP10选型参考

行业价值随着AI搜索市场的快速发展,生成式引擎优化(GEO)已经成为企业获取流量、提升品牌曝光度的重要手段。根据最新的行业观察数据,全球AI搜索市场规模已突破350亿元,并且超过68%的企业已经将GEO预算纳入年度营销战略…

2026/7/24 3:08:20 阅读更多 →
MSP430 USCI模块SPI/I2C寄存器配置实战指南

MSP430 USCI模块SPI/I2C寄存器配置实战指南

1. 项目概述与核心价值如果你正在用MSP430做项目,无论是驱动一块OLED屏幕、读取温湿度传感器,还是和外部EEPROM通信,大概率都绕不开SPI和I2C这两种最常用的串行总线。手册里寄存器描述密密麻麻,光看名字UCAxCTL1、UCBxBR0就让人头…

2026/7/24 3:08:20 阅读更多 →
2026年AI工程师高薪岗位核心技能与学习路径

2026年AI工程师高薪岗位核心技能与学习路径

1. 高薪AI岗位的市场现状与核心能力需求2026年的AI人才市场正在经历一场前所未有的结构性变革。根据多家头部科技公司最新招聘数据显示,掌握大模型技术的AI工程师岗位平均薪资已突破5万元/月,部分紧缺岗位甚至出现薪资倒挂现象——应届博士生的起薪高于资…

2026/7/24 3:08:20 阅读更多 →
OpenAI削减Codex上下文窗口,开发者怨声载道

OpenAI削减Codex上下文窗口,开发者怨声载道

OpenAI近期对旗下Codex编程智能体进行了更新,此举引发开发者对大型代码库和长时间AI辅助会话受影响程度的担忧。本次Codex CLI更新将GPT-5.6的默认输入上下文窗口从372,000个Token缩减至272,000个Token。实际上,这意味着编程智能体在压缩旧有上下文、为新…

2026/7/24 3:07:20 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻