Redis-Bitfield常用命令
Redis-Bitfield常用命令
类型说明:将一个redis字符串看作是一个由二进制组成的数组,可以直接寻址和修改指定的整型位域
bitfield key get
对字符串类型的key,进行bitfield访问,即根据二进制位寻址。返回指定区间的二进制位所对应的位域值。
参数k1:操作的目标key
get:表示当前命令为获取,而非修改
i8:表示向后取8个二进制位
0:表示从0开始
127.0.0.1:6379> set k1 hello OK 127.0.0.1:6379> BITFIELD k1 get i8 0 #获取 k1中 从0开始,向后8个二进制位 的位域数值 104
bitfield key set
对字符串类型的key,进行bitfield修改,即根据二进制位寻址,并修改字符串中指定位置的位域
参数k1:操作的目标key
set:表示当前命令为修改,而非获取
i8:表示向后取8个二进制位
0:表示从0开始
120:是值位域120所表示的字符,表示要修改为120
127.0.0.1:6379> BITFIELD k1 set i8 0 120 # 修改 k1中 从0开始 向后8个二进制位 将此区间的二进制所表示的字符,修改为120(位域) 104 127.0.0.1:6379> get k1 # 结果是将hello中的h修改为了x。位域120表示的则是字符x xello
bitfield key incrby
将字符串类型的key,根据二进制位寻址,并将指定位置的位域值进行增加
参数k1:操作的目标key
incrby:表示增加
2:表示从2往后的3开始
u4:表示向后取4个二进制位
1:表示将取到的二进制位所对应的位域+1
127.0.0.1:6379> bitfield k1 incrby u4 2 1 # 将k1中的值转换为二进制存储方式,并从第3位开始,向后4位,将此区间的二进制位所表示的位域,进行+1。即hello的h+1后变成l 11 127.0.0.1:6379> get k1 lello
溢出控制
说明:位域的最大值是127,如果将其设置为大于127,或者使用incrby命令一直增加,使其增加到大于127。就是溢出。
三种处理溢出的方式:这里好像不太对,有空再看
wrap:使用回绕方法处理溢出,位域超过127后再次增加数值则回到-118
sat:饱和计算,超过最大值再增加则数值仍不变
fail:超过最大值127再增加,则命令直接报错,拒绝指定
使用示例:
127.0.0.1:6379> bitfield k1 overflow sat set i8 0 128 # overflow 后面跟处理溢出的方式 -128