redis学习(九)
时间:2022-07-24
本文章向大家介绍redis学习(九),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
hyperloglog
什么是基数?
基数(cardinal number)在数学上,是集合论中刻画任意集合大小的一个概念。两个能够建立元素间一一对应的集合称为互相对等集合。例如3个人的集合和3匹马的集合可以建立一一对应,是两个对等的集合。
Redis 2.8.9 版本就更新了 Hyperloglog 数据结构! Redis Hyperloglog 基数统计的算法!
优点:占用的内存是固定,2^64 不同的元素的技术,只需要废 12KB内存!如果要从内存角度来比较的 话 Hyperloglog 首选! 网页的 UV (一个人访问一个网站多次,但是还是算作一个人!) 传统的方式, set 保存用户的id,然后就可以统计 set 中的元素数量作为标准判断 ! 这个方式如果保存大量的用户id,就会比较麻烦!我们的目的是为了计数,而不是保存用户id; 0.81% 错误率! 统计UV任务,可以忽略不计的!
127.0.0.1:6666> pfadd key a b c d e f g h i j # 创建第一个
(integer) 1
127.0.0.1:6666> pfcount key
(integer) 10
127.0.0.1:6666> pfadd key1 i j z x c v b n m
(integer) 1
127.0.0.1:6666> pfcount key1
(integer) 9
127.0.0.1:6666> pfmerge key2 key key1 # 将两个合并
OK
127.0.0.1:6666> pfcount key2 # 看合并的数量
(integer) 15
如果允许容错,那么一定可以使用 Hyperloglog ! 如果不允许容错,就使用 set 或者自己的数据类型即可!
bitmap
位存储。
统计用户信息,活跃,不活跃! 登录 、 未登录! 打卡,365打卡! 两个状态的,都可以使用 Bitmaps! Bitmap 位图,数据结构! 都是操作二进制位来进行记录,就只有0 和 1 两个状态! 365 天 = 365 bit 1字节 = 8bit 46 个字节左右!
使用bitmap 来记录 周一到周日的打卡! 周一:1 周二:0 周三:0 周四:1 ......
127.0.0.1:6666> setbit sign 0 1 # 是否打卡,0已打卡,1未打。(规则自己定。)
(integer) 0
127.0.0.1:6666> setbit sign 1 0
(integer) 0
127.0.0.1:6666> setbit sign 2 0
(integer) 0
127.0.0.1:6666> setbit sign 3 1
(integer) 0
127.0.0.1:6666> setbit sign 4 1
(integer) 0
127.0.0.1:6666> setbit sign 5 0
(integer) 0
127.0.0.1:6666> setbit sign 6 0
(integer) 0
127.0.0.1:6666> getbit sign 3 # 获取周三。
(integer) 1
127.0.0.1:6666> getbit sign 6
(integer) 0
127.0.0.1:6666> bitcount sign # 这周三个0,也就是打卡三天。
(integer) 3
- oc 中随机数的用法(arc4random() 、random()、CCRANDOM_0_1()
- 央行出台条码支付新规;美团打车将在7大城市上线;国产人工智能平台型芯片首发;苹果就降速门致歉
- 阿三又让全球看笑话,无人驾驶的地铁名不副实,还直接跑到大街上
- 盘点:2017年度这些科学大事件,哪个给您印象最深?
- 跳台阶问题
- mac下使用github
- CSS3新特性应用之结构与布局
- 程序猿的日常——Java基础之equals与hashCode
- 贾康:智能金融需在发展和规范中掌握理性权衡点
- Objective-C: 字符串NSString与NSMutableString
- 2017年最后一篇推送,仍然与技术有关盘点深度学习论文年度之“最”
- 【垂直居中高级篇】你不知道的垂直居中方式
- 第一个APP:IOS做简单运算的计算器
- 进程、线程、应用程序之间的关系
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 安卓计算器
- conda配置清华源
- 头文件保护符
- 对向上转型的理解
- C语言入门系列之12.位运算
- C语言经典习题100例(三)11-15
- Unity 3D自动对焦
- C语言经典习题100例(四)16-20
- C语言经典习题100例(六)26-30
- 再探Numpy中的axis(也是torch中的dim)
- 掌握好这几个css属性,少写100行js代码
- Flash写入性能下降问题
- 如何用开源项目申请 JetBrains 产品的 license
- npm -i 与npm install -S与-D的区别以及dependencies与devDependencies的区别
- axios POST提交数据的三种请求方式写法