redis中HLL的使用
这里给出官方文档(中文翻译版)连接,里面关于时间复杂度、返回值、命令方式、使用案例等等都有详细说明

本文对每个命令都简介总结并个人案例展示

pfadd 添加
影响基数估值则返回1否则返回0.若key不存在则创建
时间复杂度O(1)

127.0.0.1:6379> pfadd m1 1 2 3 4 1 2 3 2 2 2 2
(integer) 1

pfcount 获得基数值
得到基数值,白话就叫做去重值(1,1,2,2,3)的插入pfcount得到的是3
可一次统计多个key
时间复杂度为O(N),N为key的个数
返回值是一个带有 0.81% 标准错误(standard error)的近似值.

127.0.0.1:6379> pfadd m1 1 2 3 4 1 2 3 2 2 2 2
(integer) 1
127.0.0.1:6379> pfcount m1
(integer) 4

pfmerge 合并多个key
取多个key的并集
命令只会返回 OK.
时间复杂度为O(N)

127.0.0.1:6379> pfadd m1 1 2 3 4 1 2 3 2 2 2 2
(integer) 1
127.0.0.1:6379> pfcount m1
(integer) 4
127.0.0.1:6379> pfadd m2 3 3 3 4 4 4 5 5 5 6 6 6 1
(integer) 1
127.0.0.1:6379> pfcount m2
(integer) 5
127.0.0.1:6379> pfmerge mergeDes m1 m2
OK
127.0.0.1:6379> pfcount mergeDes
(integer) 6

应用场景
说明:

基数不大,数据量不大就用不上,会有点大材小用浪费空间
有局限性,就是只能统计基数数量,而没办法去知道具体的内容是什么
和bitmap相比,属于两种特定统计情况,简单来说,HyperLogLog 去重比 bitmap 方便很多
一般可以bitmap和hyperloglog配合使用,bitmap标识哪些用户活跃,hyperloglog计数
一般使用:

统计注册 IP 数
统计每日访问 IP 数
统计页面实时 UV 数
统计在线用户数
统计用户每天搜索不同词条的个数
参考链接
神奇的HyperLogLog算法
Redis new data structure: the HyperLogLog
原论文页:HyperLogLog: the analysis of a near-optimal
cardinality estimation algorithm
java实现HyperLogLog的github
基数估计算法概览
hyperloglog的java版使用
参考java使用案例:Probabilistic data Structures – Bloom filter and HyperLogLog for Big Data

redis中HLL的使用hyperloglog相关推荐

  1. Redis中的Bitmaps、HyperLogLog、Geospatial

    目录 Bitmaps 如何选择集合类型 判断用户登录状态 小结 HyperLogLog 什么是基数 应用场景 命令 Geospatial 如何实现定位 Geohash技术 geohash的计算 geo ...

  2. HyperLogLog原理与在Redis中的使用

    Redis-HyperLogLog 基于HyperLogLog算法,使用极小的空间完成巨量运算 Redis 中HyperLogLog 基本使用 常用命令 PFADD key element [elem ...

  3. HyperLogLog 算法原理及其在 Redis 中的实现

    一.问题引入 大家在项目上可能会遇到过下面这些相同或者类似的需求: 统计一个APP的日活量(DAU)和月活量(MAU).日活(月活)是指在一个统计日(统计月)之内,登录或者使用产品的不同用户数量,它是 ...

  4. Redis修行 — 基数统计:HyperLogLog

    学 无 止 境 ,与 君 共 勉 . 简介 HyperLogLog是Redis中的高级数据结构,它主要用于对海量数据(可以统计2^64个数据)做基数统计(去重统计数量).它的特点是速度快,占用空间小( ...

  5. HLL 算法(HyperLogLog)

    HyperLogLog,下面简称为HLL,它是 LogLog 算法的升级版,作用是能够提供不精确的去重计数.存在以下的特点: 代码实现较难. 能够使用极少的内存来统计巨量的数据,在 Redis 中实现 ...

  6. 数据类型_分享redis中除5种基础数据类型以外的高级数据类型

    众所周知,在redis中的数据类型有String(字符串).hash(哈希).list(列表).set(集合).zset(有序集合)五种.但在这5种之外还有高级数据类型. 今天和大家介绍下常用的高级数 ...

  7. 【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO

    [Redis]14.Redis高级数据类型Bitmaps.HyperLogLog.GEO Bitmaps:用比特位进行快速的状态统计 Bitmaps基本操作 Bitmaps不是一个新的数据类型,而是s ...

  8. Redis中布隆过滤器的使用及原理

    <玩转Redis>系列文章主要讲述Redis的基础及中高级应用.本文是<玩转Redis>系列第[11]篇,最新系列文章请前往公众号"zxiaofan"查看, ...

  9. Redis中三种特殊数据类型

    本文来说下Redis中三种特殊数据类型 文章目录 Gerspatial地理位置 Hyperloglog基数统计 Bitmap位图 Gerspatial地理位置 一共 6 个命令: GEOADD GEO ...

最新文章

  1. [网页设计]点睛价值
  2. mybatis的mapper.xml中使用java类中的全局变量
  3. C#实现局域网内远程开机
  4. 模拟浏览器自动化测试工具Selenium之三页面窗口切换开发篇
  5. Windows 技术篇-任务管理器查看执行进程的程序所在位置方法,查看执行进程的命令行
  6. 【解决方案】from pip import main
  7. 二、项目运行环境【PMP 】
  8. 3D Vision公开课 | 移动机器人视觉三维感知的现在与将来
  9. 在JavaScript面向对象编程中使用继承(5)
  10. 第 1 篇 Scrum 冲刺博客
  11. python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
  12. 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
  13. 一盘商家一盘货,拼多多为什么比手淘便宜?
  14. Window10下修改User文件夹中的 用户文件夹 名称
  15. Github骚操作绑定中国+86手机号码实现两步验证
  16. cuda 和 pytorch 安装
  17. (净化anaconda)conda install 中途打断出现ERROR REPORT
  18. 留着以后慢慢做的计算几何(题表)
  19. 用JSP-Servlet构建三层式管理信息系统
  20. TOOM网上舆情应急处置预案,怎么加强网上舆情监控?

热门文章

  1. 创建第一个three.js三维场景,可通过鼠标缩放与移动方块(vue中使用three.js02)
  2. 手机号码、电话号码正则表达式
  3. jeecg屏蔽聊天窗口
  4. pyspider最易上手的初学教程
  5. 大厂面试系列(中)—拿到蚂蚁金服社招offer,过来还愿分享面经
  6. android实现双屏异显,双触摸输入
  7. 笔记本电脑硬盘不见了_笔记本电脑开机找不到硬盘完美解决方法
  8. 【Linux】进程控制 —— 进程创建/终止/等待
  9. Grasshopper如何安装Gha文件(电池插件)
  10. MOS体二极管的作用以及另外并联二极管的作用