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

redis特殊数据类型-Hyperloglog(基数统计)用法

一,Hyperloglog介绍

        

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。其底层使用string数据类型如果允许容错,那么一定可以使用Hyperloglog !如果不允许容错,就使用set或者自己的数据类型即可 !

二,Hyperloglog应用场景

网页的访问量(UV):一个用户多次访问,也只能算作一个人。

传统实现,存储用户的id,然后每次进行比较。当用户变多之后这种方式及其浪费空间,而我们的目的只是计数,Hyperloglog就能帮助我们利用最小的空间完成。

三,命令

命令	描述
PFADD key element1 [elememt2..]	添加指定元素到 HyperLogLog 中
PFCOUNT key [key]	返回给定 HyperLogLog 的基数估算值。
PFMERGE destkey sourcekey [sourcekey..]	将多个 HyperLogLog 合并为一个 HyperLogLog

四,案例

------------setbit--getbit--------------
127.0.0.1:6379> setbit sign 0 1 # 设置sign的第0位为 1 
(integer) 0
127.0.0.1:6379> setbit sign 2 1 # 设置sign的第2位为 1  不设置默认 是0
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 5 1
(integer) 0
127.0.0.1:6379> type sign
string127.0.0.1:6379> getbit sign 2 # 获取第2位的数值
(integer) 1
127.0.0.1:6379> getbit sign 3
(integer) 1
127.0.0.1:6379> getbit sign 4 # 未设置默认是0
(integer) 0-----------bitcount----------------------------
127.0.0.1:6379> BITCOUNT sign # 统计sign中为1的位数
(integer) 4

相关文章:

  • Python大数据分析与挖掘实战--第三章课后习题解题思路及源代码
  • HarmonyOS实战开发-使用OpenGL实现2D图形绘制和动画。
  • 【MySQL学习】MySQL的慢查询日志和错误日志
  • Python - 基础知识
  • 分布式深度学习库BigDL简述
  • # C++之functional库用法整理
  • spring 和spring boot的区别
  • swiftUI macOS使用webview加载外部网址
  • 2024年最新社交相亲系统源码下载
  • Bilstm双向长短期神经网络多输入单输出回归分析
  • ddres( ) 组站星双差方程和设计矩阵
  • redis 集群模式(redis cluster)介绍
  • 数据结构:构建完全二叉查找树
  • c++的学习之路:17、stack、queue与priority_queue
  • 零售EDI:Princess Auto EDI对接
  • hexo+github搭建个人博客
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • idea + plantuml 画流程图
  • java8-模拟hadoop
  • JavaScript 一些 DOM 的知识点
  • JavaScript新鲜事·第5期
  • java中具有继承关系的类及其对象初始化顺序
  • MYSQL 的 IF 函数
  • Python3爬取英雄联盟英雄皮肤大图
  • supervisor 永不挂掉的进程 安装以及使用
  • 分布式事物理论与实践
  • 使用权重正则化较少模型过拟合
  • 数组的操作
  • 通过几道题目学习二叉搜索树
  • 携程小程序初体验
  • 一文看透浏览器架构
  • 栈实现走出迷宫(C++)
  • 正则与JS中的正则
  • Nginx实现动静分离
  • ​卜东波研究员:高观点下的少儿计算思维
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (07)Hive——窗口函数详解
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (MATLAB)第五章-矩阵运算
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (六)软件测试分工
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • .NET Core 2.1路线图
  • .net core控制台应用程序初识
  • .NET DataGridView数据绑定说明
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET连接数据库方式
  • @angular/cli项目构建--http(2)
  • @hook扩展分析
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [C#]winform部署PaddleOCRV3推理模型
  • [C#]科学计数法(scientific notation)显示为正常数字