微服务 教程
1085个小节阅读:196.6k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在计算机中,用二进制(位)作为存储信息的基本单位,1个字节等于8位。
例如 "abc" 字符串是由 3 个字节组成,计算机存储时使用其二进制表示,"abc"分别对应的ASCII码是97、98、99,对应的二进制是01100001、01100010、01100011,在内存中表示如下:
合理地使用位能够有效地提高内存使用率和开发效率。
Redis提供了Bitmaps这个 “数据结构” 可以实现对位的操作:
设置Bitmaps中某个偏移量的值。
语法结构:
xxxxxxxxxx
setbit key offset value
示例:
redis中bitmaps可以用来统计用户信息,eg:活跃天数、打卡天数、登录天数
bitmaps位图,都是操作二进制来进行记录,就只有0和1两个状态
xxxxxxxxxx
127.0.0.1:6379> getbit sign 1 # 获取第一天的打卡状态
(integer) 1
127.0.0.1:6379> BITCOUNT sign # 统计所有打卡天数
(integer) 4127.0.0.1:6379> setbit zhangsan:3 1 1 # 往sign中添加数据,第1天打卡
(integer) 1
127.0.0.1:6379> setbit zhangsan:3 2 0 # 第2天未打卡
(integer) 0
127.0.0.1:6379> setbit zhangsan:3 3 1 # 第3天打卡
(integer) 0
127.0.0.1:6379> setbit zhangsan:3 4 0 # 第4天未打卡
(integer) 0
127.0.0.1:6379> setbit zhangsan:3 5 1 # 第5天打卡
(integer) 0
127.0.0.1:6379> setbit zhangsan:3 6 0 # 第6天未打卡
(integer) 0
127.0.0.1:6379> setbit zhangsan:3 7 1 # 第7天打卡
(integer) 0 127.0.0.1:6379> getbit sign 1 # 获取第一天的打卡状态
(integer) 1
127.0.0.1:6379> BITCOUNT sign # 统计所有打卡天数
(integer) 4
127.0.0.1:6379> getbit sign 1 # 获取第一天的打卡状态
(integer) 1
获取Bitmaps中某个偏移量的值。
语法结构:
xxxxxxxxxx
getbit key offset
示例:
获取key的offset 的值。
xxxxxxxxxx
getbit sign 3 获取偏移量为1的值,结果为1
如果偏移量未设置值,则也返回0。
xxxxxxxxxx
getbit sign 99 获取偏移量为99的值,结果为0
统计字符串被设置为1的bit数量。一般情况下,给定的整个字符串都会被进行统计,可以选择通过额外的start和end参数,指定字节组范围内进行统计(包括start和end),0表示第一个元素,-1表示最后一个元素。
语法结构:
xxxxxxxxxx
bitcount key [start end]
示例:
xxxxxxxxxx
bitcount sign 获取整个字符串被设置为1的bit数量,结果为3
如:当前存在一个key为k1的bitmaps存储着[00000001,00000001,00000010,00000011],分别对应[1,1,2,3]。
xxxxxxxxxx
setbit num 7 1
setbit num 15 1
setbit num 22 1
setbit num 30 1
setbit num 31 1
bitcount num 1 2 统计索引1、2两个字节组中bit=1的数量,即统计00000001,00000010中bit=1的数量,结果为2
bitcount num 1 3 统计索引1、2、3三个字节组中bit=1的数量,即统计00000001,00000010,00000011中bit=1的数量,结果为4
bitcount num 0 -1 统计所有的字节组中bit=1的数量,结果为5
setbit设置或获取的是bit(位)的位置,bitcount计算的是byte(字节)位置。
将多个bitmaps通过求交集/并集方式合并成一个新的bitmaps。
语法结构:
xxxxxxxxxx
bitop and/or destkey sourcekey1 sourcekey2……
示例:
xxxxxxxxxx
bitop and k3 k1 k2 通过求交集将k1 k2合并成k3
bitop or k3 k1 k2 通过求并集将k1 k2合并成k3
1. Redis技术Bitmaps数据类型中如何设置Bitmaps中某个偏移量的值。
A setbit
B getbit
C bitcount
D bitop
2. Redis技术Bitmaps数据类型中如何获取Bitmaps中某个偏移量的值。
A setbit
B getbit
C bitcount
D bitop
1=>A 2=>B