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。

 

SETBIT命令setbit key offset value,將指定key的offset下標設置爲0或者1。例如把offset=6下標的value設置爲1,則ABC就變成了CBC了,在把offset=7下標的value設置爲0,則CBC就變成了BBC了。

總結: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

效果圖:

 

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

效果圖:

 

識別二維碼關注個人微信公衆號

本章完結,待續,歡迎轉載!
 
本文說明:該文章屬於原創,如需轉載,請標明文章轉載來源!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章