setbit命令:
语法:setbit key offset value
对key所存储的字符串值,设置或清除指定偏移量上的位(bit).
位的设置或者清除取决于value参数,可以是0也可以是1.
当key不存在的时候,自动生成一个新的字符串.
字符串会进行伸展以确保它可以将value保存在指定的偏移量上。当字符串上的值进行伸展的时候,
空白位置以0填充
offset 参数必须大于或者等于0 小于2^32(bit映射被限制在512M内)注意从左开始为第0位
解释:
setbit m 100 1
m为key
offset(偏移量)为100 就是设置二进制0000000……00000 从左到右第一百位
value(值) 为1 就是设置二进制0000000……00001 从左到右第一百位为1
如果使用的set的话:
set m "ab"
a的二进制为:01100001
b的二进制为:01100010
所以设置m为ab在get看来是ab getbit看来是:0110000101100010
setbit m 6 1
设置第6 位为1也就是a的二进制01100001修改为01100011
get m
返回cb
同理设置第15位为1的话,返回cc
getbit命令:
语法:getbit key offset
对key所存储的字符串值,获取指定偏移量上的位(bit)
当offset比字符串值的长度大,或者key不存在时,返回0
返回值:
字符串指定偏移量上的位(bit)
接着上面的例子:
getbit m 100
返回1
bitcount命令:
语法:bitcount key [start] [end]
计算给定字符串中,被甚至为1的比特位的数量。
默认情况下,给定的整个字符串都会被进行计数,可以通过start、end指定区间中指定计数操作
start和end可以包含负值,以便从字符串末尾开始索引字节,其中-1是最后一个字节,以此类推
不存在的键被视为空字符串,返回0
返回值:
被设置为1的位的数量。
举例:
set m "ab" 0110000101100010
bitcount m 返回6
bitcount m 0 0 也就是a 返回3
bitcount m 1 1 也就是b 返回3