淘先锋技术网

首页 1 2 3 4 5 6 7

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个数
f011001104
o011011116
o011011116
b011000103
a011000013
r011100104
  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。