当前位置:网站首页>【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态)
【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态)
2022-08-08 13:06:00 【InfoQ】
1、位图
512MB基本使用
getsetSETBIT key 索引 值0/1
SETBIT
0110 0001geta
GETBIT key 索引
127.0.0.1:6379> GETBIT f 1
(integer) 1
127.0.0.1:6379> GETBIT f 0
(integer) 0
通过SET 一次设置单个位图的所有位
SET127.0.0.1:6379> set g a
OK
127.0.0.1:6379> get g
"a"
127.0.0.1:6379> GETBIT g 1
(integer) 1
127.0.0.1:6379> GETBIT g 0
(integer) 0
BITFIELD 设置多个位
BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]127.0.0.1:6379> BITFIELD mykey2 set u1 1 1 set u1 2 1 set u1 7 1
1) (integer) 0
2) (integer) 0
3) (integer) 0
127.0.0.1:6379> get mykey2
"a"
BITCOUNT
#start和end参数指的是字节的索引 不是位的索引127.0.0.1:6379> set mykey abcde
OK
127.0.0.1:6379> get mykey
"abcde"
127.0.0.1:6379> BITCOUNT mykey 0 0 //是计算第一个字符 a的位数
(integer) 3
127.0.0.1:6379> BITCOUNT mykey 0 1 //是计算前两个个字符 ab的位数
(integer) 6
127.0.0.1:6379> BITCOUNT mykey 0 2
(integer) 10
127.0.0.1:6379> BITCOUNT mykey 1 1 //是计算第2个字符 b的位数
(integer) 3
BITPOS 查找指定值为0或1的第一位。
#start和end参数指的是字节的索引 不是位的索引a=0110 0001 b=0110 0010127.0.0.1:6379> BITPOS mykey 1 0 0
(integer) 1
a=0110 0001 b=0110 0010127.0.0.1:6379> BITPOS mykey 1 1 1
(integer) 9
counter(counterh2)位图的使用场景
记录用户一年的签到情况
- 记录每个用户的一年中每天的签到情况
- 统计某个时间段 用户的签到天数
- 可以查询某个时间段的签到情况
2020-1-1getbit管道lua脚本BITCOUNT uidkey 0 0#start和end参数指的是字节的索引 不是位的索引start和end参数指的是字节的索引 不是位的索引
BITCOUNT key 1 2getbitgetbit实时统计在线人数和某个用户的在线状态
incrgetbit key 索引BITCOUNT[[email protected]]# /usr/local/bin/redis-cli -r -1 -i 1 INFO |grep rss_human
used_memory_rss_human:7.72M
127.0.0.1:6379> SETBIT bigbit 1 1
(integer) 0

7.72->7.73127.0.0.1:6379> SETBIT bigbit 100000000 1
(integer) 0

7.73->20.92BITCOUNT统计大数据量的性能问题
BITCOUNTBITCOUNTgetGETINCR- 取一个单独的密钥,该密钥在每次修改位图时都会递增。使用小的Redis Lua脚本可以非常高效和原子。
- 使用BITCOUNT 开始和结束 可选参数递增地运行位图,在客户端积累结果,并可选地将结果缓存到密钥中。

边栏推荐
猜你喜欢

MySQl表的增删查改(CRUD)

TS+Hooks二次封装antd Modal,实现可拖拽

南非 KMP 媒体集团实施了 DMS(文档管理系统)使流程数字化,员工可以再次专注于他们的实际任务,提供了效率

萤石、小米对垒智能摄像头

Program Environment and Preprocessing

深入浅出对话系统——任务型对话系统技术框架
![[界面开发]DevExpress WinForms流程图控件——XtraDiagrams组件入门指南](/img/0f/ef24101bebfea90e457a92e3017a3e.png)
[界面开发]DevExpress WinForms流程图控件——XtraDiagrams组件入门指南

使用.NET简单实现一个Redis的高性能克隆版(三)

连锁小酒馆第一股,海伦司能否梦圆大排档?

将小部分源码设计精髓带入到开发中来(工厂模式、适配器模式、抽象类、监听器)
随机推荐
Implement a customized pin code input control
八月粉丝福利来了!大疆手机云台你爱了吗?
复盘:什么是秋招提前批?什么是普通秋招?都是招聘,为啥要设置这两个招聘时间段
数据解析(XPath、BeautifulSoup、正则表达式、pyquery)
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
SQL实例 - 胜平负
sample函数—R语言
Docker-持久化数据库(数据卷)
牛 plus,多层嵌套动态 JSON 该如何解析总结
logistic回归模型—基于R
AfterEffect插件-图层排序-js脚本开发-AE插件
php文件上传下载(存放文件二进制到数据库)
(6) FlinkSQL writes kafka data to mysql Method 1
处理器的调试接口
行业领先的界面开发组件DevExpress 8月发布新版——v22.1.4
MySQL:索引(1)原理与底层结构
“自降估值”3个亿的咖啡独角兽要IPO了
[C language] In-depth analysis of data storage in memory
南非 KMP 媒体集团实施了 DMS(文档管理系统)使流程数字化,员工可以再次专注于他们的实际任务,提供了效率
(7) FlinkSQL kafka data written to the mysql way 2