redis统计在线用户(bitmap)

redis统计在线用户(bitmap)

setbit 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
就是对字符串取ascii码,然后转成二进制,然后操作二进制,来进行统计。
注意:这里的偏移量是指二进制的下标(从0开始)

设置
setbit key offset [1或0] 对key所对应的值得位的指定位置执行偏移(其中offset是key对应的值得下标,num是把位的值改为0或1)

获取
getbit key offset 获取指定位上值是0还是1。

统计
bitcount key 统计指定位区间上值为1的个数

对多个bitmap进行操作and(交集),or(并集),not(非),xor(异或)
bitop [and或or或not或xor] destkey key1 key2 ......

查看指定字节的位置是0还是1
bitpos key targetbit [start end] 通过start字节和end字节查
key所对应的值得位是0还是1

例如统计登录的用户id的数量和id

set one 0

由于0的二进制中有两个1所以都设置为0

setbit one 2 0
setbit one 3 0

这样 one的值0的所以位都是0,。

get one

可以看出来现在的值已经不是0了。

如果id为1的登录了。
setbit one 1 1
如果id为3的登录了
setbit one 3 1

如果id超过了值得位数该怎么办呢?凉拌,redis会自动的去处理。

所以id为88888的登录了
setbit one 88888 1

统计登录数量
bitcount one

查看用户是否登录了。
getbit one 88888

对多个bitmap进行操作

undefined

获取指定位是0还是1

set two ab
bitpos two 0 1 1

无论是字节还是位都是从0开始

undefined

0表示获取位为0,开始是第一个字节(下标),结束也是
那么就是获取b的位为0的位置,正好是第一个。位置是9,下标是为8