1.例如存储一个java字符串,j对应的ACII码为74,转为2进制为01001010,a对应的ACII码为a,转为2进制为01100001,v对应的ACII码为118,转为2进制为01110110。如下k1为key第一个参数为偏移量,第二个参数位置
场景:假设要统计用户的签到记录,可以通过1来代表签到,0代表未签到,格式即为:101000111…
另外,bitcount命令后还可以带两个参数表示起始位置和结束位置,注意:是指value值的起始位置,不是值bit的起始位置
1.统计0/1出现的起始位置
2.后面还可以带两个参数,指的是字符的起始位置,不是bit的起始位置!
获取k1中值的位,从0开始,获取5个位,返回一个数,u代表无符号,i代表有符号,有符号,1开头就代表负数,0就代表正数!
bitfield k1 get u5 0
1.比如,现在k2对应的value为ja
2.修改为jb,b对应的ACII码为98
如下命令代表从第八开始的后八位用98转换成二进制(无符号)来替代
bitfield k2 set u8 8 98
1.自增操作有可能出现溢出,既有向上溢出也有可能出现向下溢出,redis中对于溢出采取的方案是折返,即8位无符号位数255加1溢出变为0,8为有符号数127,加1变为-128
以下代表从第五位开始的后三位加1
bitfield k2 incrby u3 5 1
2.再给第五位开始的后三位加1,会出现三组1+1的情况,出现溢出,就都变成0了
bitfield k2 incrby u3 5 1
3.也可以修改溢出策略,改为执行失败fail
bitfield k2 overflow fail incrby u3 5 1
4.sat表示保留在最大值或者最小值
bitfield k2 overflow sat incrby u3 5 1
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_41359273/article/details/120686761
内容来源于网络,如有侵权,请联系作者删除!