Redis BIT位操作

一)BIT简介

BIT位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作。而String类型的key是二进制格式的,所以任意二进制格式的数据都可以作为key。

 

二)SETBIT和GETBIT命令

第一步:使用set命令设置一个字符串,set sbit ABC,字符ABC的ASCII值分别为656667。Redis中是以8位二进制的方式存储,列举表格如下:

ABC二进制表格
字母 A B C
ASCII 65 66 67
二进制 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1
下标 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

GETBIT命令getbit key offset,获取指定offset下标的二进制,返回0或者1。当offset超过下标时,一直返回0。

Redis BIT位操作_第1张图片

 

SETBIT命令setbit key offset value,将指定key的offset下标设置为0或者1。例如把offset=6下标的value设置为1,则ABC就变成了CBC了,在把offset=7下标的value设置为0,则CBC就变成了BBC了。

Redis BIT位操作_第2张图片

总结:setbit主要是正对于offset下标,然后修改对应二进制位的value,针对于位的操作。该操作主要是为了方便举例,在ABC二进制位上操作,也可以操作其它的位数,但需知道对应字母的ASCII表和二进制表。

 

三)BITCOUNT命令

BITCOUNT命令:bitcount key [start end],可以获得字符串类型键中值是1的二进制位个数。

统计字符串ABC的二进制位为1的数量:7

 

统计字符串A的二进制位为1的数量:2

 

统计字符串AB的二进制位为1的数量:4

 

统计字符串BC的二进制位为1的数量:5

 

四)BITOP命令

BITOP命令bitop operation destkey key [key ...],在不同的字符串之间执行按位运算。提供的运算为AND,OR,XOR和NOT。

含义:对多个字符串key进行操作,并把结果存储到destkey中。

 

bitop or res s1 s2命令操作:把字符串s1和字符串s2进行or操作,然后把结果存储到字符串res中

s1 A B C
0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1
OR  
s2 C B A
0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1
=  
res C B C
0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1

效果图:

Redis BIT位操作_第3张图片

 

bitop and res s1 s2命令操作:对每一位进行AND操作

s1 A B C
0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1
AND  
s2 C B A
0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1
=  
res A B A
0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1

效果图:

Redis BIT位操作_第4张图片

 

识别二维码关注个人微信公众号

本章完结,待续,欢迎转载!
 
本文说明:该文章属于原创,如需转载,请标明文章转载来源!

你可能感兴趣的:(Redis)