Redis之Hyperloglog及Bitmaps
2021/9/23 19:43:07
本文主要是介绍Redis之Hyperloglog及Bitmaps,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Hyperloglog
什么是基数?
A{1,3,5,7,4,9}
B{1,3,5,7}
基数(不重复的元素),可以接受误差!
简介
Hyperloglog 技术统计的算法
优点:占用的内存是固定,2^64不同的元素技术,只需要12KB内存
网页的UV(一个人访问一个网站多次,但是还算一个人!)
传统的方式,set保存用户的id,然后就可以统计set中的元素数量作为标准判断!
这个方式如果保存大量的用户id,就会比较麻烦!我们的目得是为了计数,而不是保存用户id;
127.0.0.1:6379> PFADD mykey a b c e f g h j k l #创建第一组元素 (integer) 1 127.0.0.1:6379> PFCOUNT mykey #统计mykey元素的技术数量 (integer) 10 127.0.0.1:6379> PFADD mykey2 dfasguygfffyuerhfugbduygfuyrwguyfg (integer) 1 127.0.0.1:6379> PFADD mykey2 f ef e ge g e ge g eg eg e g e ge g #创建第二组元素mykey2 (integer) 1 127.0.0.1:6379> PFCOUNT mykey2 (integer) 7 127.0.0.1:6379> pfmerge mykey3 mykey mykey2 #合并两组 mykey mykey2=>mykey3 并集 OK 127.0.0.1:6379> PFCOUNT mykey3 #看并集的数量 (integer) 14 127.0.0.1:6379>
总结:如果允许容错,那么一定可以使用Hyperloglog!
如果不允许容错,就使用set或者自己的数据类型即可
Bitmaps
位存储
统计用户信息,活跃,不活跃!登录,未登录!打卡 。两个状态的可以使用Bitmaps!
Bitmaps位图,数据结构! 都是操作二进制来进行记录就只有0和1两个状态!
365天 = 365bit 1字节=8bit 46个字节左右
使用bitmap来记录,周一到周日的打开
127.0.0.1:6379> setbit sign 1 0 (integer) 0 127.0.0.1:6379> setbit sign 2 0 (integer) 0 127.0.0.1:6379> setbit sign 3 1 (integer) 0 127.0.0.1:6379> setbit sign 4 1 (integer) 0 127.0.0.1:6379> setbit sign 5 0 (integer) 0 127.0.0.1:6379> setbit sign 6 0 (integer) 0
周一 :0 周二:0 周三:1
查看某一天是否打卡
127.0.0.1:6379> getbit sign 3 (integer) 1 127.0.0.1:6379> getbit sign 2 (integer) 0 127.0.0.1:6379>
统计操作,统计打卡的天数
127.0.0.1:6379> BITCOUNT sign #统计这周打卡记录,是否全勤 (integer) 3
这篇关于Redis之Hyperloglog及Bitmaps的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧