redis之setbit、getbit、bitcount命令

setbit命令:
語法:setbit key offset value
對key所存儲的字符串值,設置或清除指定偏移量上的位(bit).
位的設置或者清除取決於value參數,可以是0也可以是1.
當key不存在的時候,自動生成一個新的字符串.
字符串會進行伸展以確保它可以將value保存在指定的偏移量上。當字符串上的值進行伸展的時候,
空白位置以0填充
offset 參數必須大於或者等於0 小於2^32(bit映射被限制在512M內)注意從左開始爲第0位
解釋:
setbit m 100 1
m爲key
offset(偏移量)爲100 就是設置二進制0000000……00000 從左到右第一百位
value(值) 爲1 就是設置二進制0000000……00001 從左到右第一百位爲1
如果使用的set的話:
set m "ab"
a的二進制爲:01100001
b的二進制爲:01100010
所以設置m爲ab在get看來是ab getbit看來是:0110000101100010
setbit m 6 1
設置第6 位爲1也就是a的二進制01100001修改爲01100011
get m
返回cb
同理設置第15位爲1的話,返回cc

getbit命令:
語法:getbit key offset
對key所存儲的字符串值,獲取指定偏移量上的位(bit)
當offset比字符串值的長度大,或者key不存在時,返回0
返回值:
字符串指定偏移量上的位(bit)
接着上面的例子:
getbit m 100
返回1

bitcount命令:
語法:bitcount key [start] [end]
計算給定字符串中,被甚至爲1的比特位的數量。
默認情況下,給定的整個字符串都會被進行計數,可以通過start、end指定區間中指定計數操作
start和end可以包含負值,以便從字符串末尾開始索引字節,其中-1是最後一個字節,以此類推
不存在的鍵被視爲空字符串,返回0
返回值:
被設置爲1的位的數量。
舉例:
set m "ab"      0110000101100010
bitcount m      返回6
bitcount m 0 0  也就是a 返回3
bitcount m 1 1  也就是b 返回3

發佈了82 篇原創文章 · 獲贊 20 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章