BITCOUNT -key [start end] :統計字符串指定起始位置的字節數
起始版本:2.6.0
時間複雜度:O(N)
統計字符串被設置爲1的bit數.
一般情況下,給定的整個字符串都會被進行計數,通過指定額外的 start 或 end 參數,可以讓計數只在特定的位上進行。
start 和 end 參數的設置和 GETRANGE
命令類似,都可以使用負數值:比如 -1 表示最後一個位,而 -2 表示倒數第二個位,以此類推。
不存在的 key 被當成是空字符串來處理,因此對一個不存在的 key 進行 BITCOUNT 操作,結果爲 0 。
返回值
Integer reply
被設置爲 1 的位的數量
REDIS命令提供的BITCOUNT例子如下:
redis> SET mykey "foobar"
OK
redis> BITCOUNT mykey
(integer) 26
redis> BITCOUNT mykey 0 0
(integer) 4
redis> BITCOUNT mykey 1 1
(integer) 6
redis>
看着不是很明白。
從ASCII碼角度解析,foobar 對應的ASCII碼如下:
二進制 | bit=1個數 | |
f | 01100110 | 4 |
o | 01101111 | 6 |
o | 01101111 | 6 |
b | 01100010 | 3 |
a | 01100001 | 3 |
r | 01110010 | 4 |
26 |
1. BITCOUNT mykey,所有位置爲1的數量爲26。
2. BITCOUNT mykey 0 0,0 0 代表開始和結束的Byte位置數。0 0 取的是f,所以結果是4。
3. BITCOUNT mykey 1 1,1 1指從第一個Byte開始到下標爲1結束,即o,結果爲6。
4. BITCOUNT mykey 1 3, 指取下標1到3,即oob,結果爲15。