当前位置: 首页 > article >正文

Redis-HyperLogLog

定义与使用

HyperLogLog是Redis的高级数据结构,它在做基数统计的时候非常有用,每个HyperLogLog的键可以计算接近2^64不同元素的基数,而大小只需要12KB

HyperLogLog目前只支持3个命令,PFADDPFCOUNTPFMERGE。底层实验主要基于伯努利估计,分桶存储,误差控制

PFADD

对比向布隆过滤器中添加元素。即用于将一个或者多个元素添加到布隆过滤器中。布隆过滤器是一种概率型数据结构,用于高效的判断一个元素是否属于一个集合,但有一定的误判率,优点是占用空间小和查询速度快。
HyperLogLog和布隆过滤器都是基于概率的数据结构,利用了哈西函数和位操作
HyperLogLog侧重于基数估计,布隆过滤器侧重于元素的存在性检查

  • 时间复杂度:O(1)
  • 使用方法
PFADD key element [element.....]

其中,key是布隆过滤器的键名,element是要添加到布隆过滤器中的元素,可以是一个或者多个

PFCOUNT

对于单个key,返回指定key的近似基数。
对于多个key,返回的是这些key并集对的近似基数。

PFCOUNT key1 key2 key3

PFMERGE

该命令用于将多个HyperLogLog结构合并到一个新的HyperLogLog结构中。

PFMERGE destKey sourceKey [sourceKey.....]

原理参考

参考1


http://www.kler.cn/a/516946.html

相关文章:

  • 某书x-s 、x-t 算法 python纯算56版本
  • 编程界“华山论剑”:PHP与Go,谁主沉浮?
  • 2024年度总结
  • 使用printmap()函数来打印地图
  • WPF 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法
  • 嵌入式硬件篇---ADC模拟-数字转换
  • React 19 新特性总结
  • Chrome 132 版本新特性
  • tomcat shutdown.sh不能关闭tomcat 进程
  • K8S-标签管理,探针,名称空间,rc控制器,svc服务发现
  • 聚类问题(K-means,系统聚类,SBSCAN算法)
  • 构建沉浸式汉语学习环境
  • Neural networks 神经网络
  • 2025春招 SpringCloud 面试题汇总
  • AI Agent:深度解析与未来展望
  • Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识
  • 【JVM】OOM
  • python——Django 框架
  • QT QListWidget控件 全面详解
  • 使用LabVIEW的History功能实现队列数据的读取而不清空
  • 在 VS Code 中使用 TypeScript 进行开发和打包的几种方法
  • Vue.js 渐进式增强:如何逐步为传统项目注入活力
  • 【深度学习】微积分
  • 移动端ui库uv-ui实现弹窗式picker选择控件
  • Node.js NativeAddon 构建工具:node-gyp 安装与配置完全指南
  • 【小游戏篇】三子棋游戏