【redis】bitmaps

1.数据结构模型

现代计算机用二进制作为信息的基础单位,1个字节等于8位,例如 "big"字符串 
是由3个字节组成,但实际在计算机存储时将其用二进制表示,"big"分别对应的
ASCII码分别是98,105,103,对应的二进制分别是01100010,01101001,01100111

许多开发语言提供了操作位的功能,合理地使用位能够有效地提高内存使用率和
开发效率。redis提供了bitmaps这个"数据结构"可以实现对位的操作。

bitmap本身不是一种数据结构,实际上它就是字符串,但是他可以对字符串的位进行操作。
bitmaps单独提供了一套命令,所以在redis中使用bitmaps和使用字符串的方法不太
相同,可以把bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,
数组的下标在bitmaps中叫作偏移量。

2.bitmaps设置值 

setbit key offset value 
offset:从0开始。

将用户是否访问网站存放在bitmaps中,将访问的用户记作1,没有访问的用户记作0;
用户偏移量作为用户的Id;

192.168.1.7:6379> setbit unique:users:20240620 0 1 
(integer) 0
192.168.1.7:6379> setbit unique:users:20240620 5 1 
(integer) 0
192.168.1.7:6379> setbit unique:users:20240620 11 1 
(integer) 0
192.168.1.7:6379> setbit unique:users:20240620 15 1 
(integer) 0
192.168.1.7:6379> setbit unique:users:20240620 19 1 
(integer) 0
192.168.1.7:6379> getbit unique:users:20240620 19
(integer) 1
192.168.1.7:6379> getbit unique:users:20240620 15
(integer) 1
192.168.1.7:6379> getbit unique:users:20240620 11
(integer) 1
192.168.1.7:6379> getbit unique:users:20240620 5
(integer) 1
192.168.1.7:6379> getbit unique:users:20240620 0
(integer) 1
192.168.1.7:6379> 

3.获取bitmaps指定范围值为1的个数。

bitcount key [start end]
[start end]:代表起始和结束字节数。
192.168.1.7:6379> bitcount unique:users:20240620
(integer) 5

192.168.1.7:6379> bitcount unique:users:20240620 1 3
(integer) 3

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值