Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

Redis BITCOUNT 命令

Redis 字符串(Strings)底层数据结构及所有相关命令 Redis 字符串(Strings)底层数据结构及所有相关命令


Redis BITCOUNT 命令计算指定的字符串中,被设置为 1 的比特位的数量。一般情况下,指定的整个字符串都会被进行计数,通过指定额外的 start 和 end 参数,可以让计数只在特定的字符串索引位置(索引以 8 位,即 1 byte 作为单位)上进行。start 和 end 参数的设置和 GETRANGE 命令类似,都可以使用负数值,比如 -1 表示最后一个字节,-2 表示倒数第二个字节,以此类推。不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0。

命令格式

BITCOUNT key [start end]

可用版本:>=2.6.0

时间复杂度:O(N)

可选参数

BITCOUNT 命令可以选择特定的 byte 范围计数,具体如下:

  • start:设置位索引起始位置(包含该位置计数),第一个位置以 0 开始,start 参数需和 end 参数同时设置才合法。
  • end:设置位索引结束位置(包含该位置计数),end 参数需和 start 参数同时设置才合法。

注意:BITCOUNT 的 start 和 end 参数的索引意义是以 1 byte 作为单位,如 bitcount mykey 0 0 命令表示 mykey 的字符串的第一个字节中比特位 1 的个数(即字符串第一个字符的比特位为 1 的个数)。

命令返回值

返回被设置为 1 的数量。

示例

redis> SET mykey foobar
OK
redis> BITCOUNT mykey
(integer) 26
redis> BITCOUNT mykey 0 0
(integer) 4
redis> BITCOUNT mykey 1 1
(integer) 6

使用场景

BITCOUNT 和 SETBIT 一起可以实现用户上线次数的统计