redis的二进制数组

111 阅读2分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战

redis的二进制数组

redis的二进制数组由SDS指出。SDS的len属性值指出SDS之中留存了多少字节长的数字组。buf数组的每个字节由一行指出,每行8位。此外,数组按无关顺序留存数字组。似乎,

getbit命令回到数字组选定偏西移量的二进制位的值,

redis> GETBIT bit 10086
(integer) 1

执行过程是将偏西移量除以8来测量偏西移量。选定的二进制位保适用位数组的字节之中,然后添加偏移量mod8以测量二进制位的数量,获取并回到该位的值

setbit命令用作为选定的偏西移量设立新值并回到旧值。如果偏移量小于当前值,它将被拓展

redis> BITCOUNT bits
(integer) 0

redis> SETBIT bits 0 1          # 0001
(integer) 0

redis> BITCOUNT bits
(integer) 1

redis> SETBIT bits 3 1          # 1001
(integer) 0

redis> BITCOUNT bits
(integer) 2

bitcount命令redis的实现使用查表法和汉明算法。当二进制位数大于等于128位时,采用汉明算法,当二进制位数小于128位时,采用查表方法

Bitop命令对两个或多个二进制数组履行位操作 bitop and 是进行与操作 bitop or是进行或操作 bitop xor是进行异或操作 bitop not是进行非操作

总结

这篇文章主要介绍了redis的二进制数组的相关内容,redis的二进制数组用SDS来表示,getbit命令返回位数组指定偏移量的二进制位的值,setbit命令对指定的偏移量设置新值,并返回旧值,bitcount命令统计数组中值是1的个数,当二进制位的数量大于等于128位的时候使用的是汉明算法,小于128位的时候使用的是查表法,bitop命令对二进制数组进行位操作,它有各种的参数,and表示与操作,or表示或操作,xor表示异或操作,not表示非操作,这些命令都是对二进制数组的操作命令,熟练掌握二进制数组命令可以让我们更加熟悉redis的二进制数组。