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。