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

一,Hyperloglog介绍

bash 复制代码
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。

花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。

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

其底层使用string数据类型

如果允许容错,那么一定可以使用Hyperloglog !

如果不允许容错,就使用set或者自己的数据类型即可 !

二,Hyperloglog应用场景

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

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

三,命令

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

四,案例

bash 复制代码
------------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
string

127.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
相关推荐
赵优秀一一4 分钟前
SQLAlchemy学习记录
开发语言·数据库·python
m0_640309306 分钟前
如何在phpMyAdmin中生成XML格式导出_与其他企业系统的数据交互
jvm·数据库·python
xuhaoyu_cpp_java10 分钟前
MySql学习(四)
数据库·经验分享·笔记·sql·学习·mysql
D4c-lovetrain11 分钟前
Linux个人心得27 (redis哨兵模式实战)
linux·redis·bootstrap
2301_8152795212 分钟前
JavaScript中快速清空数组的多种方式及其性能差异
jvm·数据库·python
START_GAME14 分钟前
SQL Server 还原 .bak 文件(SSMS 图形界面法)
运维·服务器·数据库
suliqiang14 分钟前
MySQL数据库性能优化实战:系统性能提升100%的完整指南
数据库·mysql·性能优化
数厘16 分钟前
2.20 sql基础聚合函数(COUNT、SUM、AVG、MAX、MIN)
数据库·sql·oracle
码农周20 分钟前
告别大体积PDF!基于PDFBox的Java压缩工具
java·spring boot
苏渡苇26 分钟前
Redis 版本演进、新特性与协议那些事儿
数据库·redis·缓存·开源协议·redis版本·redis新特性