Redis-Bitmap位图常用命令

Redis-Bitmap常用命令

类型说明:bitmap是由0/1状态表现的二进制位的bit数组

应用场景:打卡,签到统计

特点:用String类型作为底层数据结构实现的一种统计二值状态的数据类型

位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。

Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)

简而言之:用0/1存储只需要1个bit就能表示状态,极大的节省了内存。

setbit

添加/修改一个bitmap类型数据

用于添加

127.0.0.1:6379> setbit k1 1 1 # 1的状态为1
0
127.0.0.1:6379> setbit k1 2 1 # 2的状态为1
0
127.0.0.1:6379> getbit k1 1
1

用于修改

127.0.0.1:6379> setbit k1 1 0 # 1已存在 所以再次setbit则是将原来的1修改为0
1
127.0.0.1:6379> getbit k1 1
0

getbit

返回某个元素的值(或者说叫状态)

127.0.0.1:6379> setbit k1 1 0
1
127.0.0.1:6379> getbit k1 1 # 查看k1中1的值
0

strlen

返回指定key存储数据所占用的字节数

复制代码
127.0.0.1:6379> setbit k1 1 1 # 第一个bit位不为0
1
127.0.0.1:6379> setbit k1 2 1 # 第二个bit位不为0
1
127.0.0.1:6379> strlen k1 # 此时k1不到未超过1个字节的长度(不到8个bit)所以长度为0
1
127.0.0.1:6379> setbit k1 8 1 # 第8个bit位不为0,此时1个字节不够存储,redis将自动扩容为2个字节
0
127.0.0.1:6379> strlen k1 # 此时k1存储的字节为2个,所以执行当前命令返回2。即表示k1占用了两个字节
2
复制代码

bitcount

返回某个key中含1的值有多少个

127.0.0.1:6379> bitcount k1  # 统计k1中含1的值有多少个
4

bitop

将两个key中相同天数且状态为1的值合并添加到一个新的key中

参数:20220624 和 20220624表示计算这两个key中的相同的值

参数key1表示要添加到的新的key

复制代码
127.0.0.1:6379> setbit 20220624 0 1
0
127.0.0.1:6379> setbit 20220624 1 1
0
127.0.0.1:6379> setbit 20220624 2 1
0
127.0.0.1:6379> setbit 20220624 3 1
0
127.0.0.1:6379> setbit 20220625 0 1
0
127.0.0.1:6379> setbit 20220625 2 1
0
127.0.0.1:6379> bitop and key1 20220624 20220625 # 将0624和0625两个key中存储的数据的相同天数且状态都为1的值,合并到key1中。返回1则表示成功
1
127.0.0.1:6379> bitcount key1 # 此时key中状态为1的值共有两个
2
复制代码

 

 

 

posted @   邵杠杠  阅读(245)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示