redis操作位

x33g5p2x  于9个月前 转载在 Redis  
字(0.9k)|赞(0)|评价(0)|浏览(82)

1.redis的基本操作可以分为两大类

1.1 零存整取

1.例如存储一个java字符串,j对应的ACII码为74,转为2进制为01001010,a对应的ACII码为a,转为2进制为01100001,v对应的ACII码为118,转为2进制为01110110。如下k1为key第一个参数为偏移量,第二个参数位置

1.2 整存零取

2.统计

2.1 bitcount命令(统计1出现的次数)

场景:假设要统计用户的签到记录,可以通过1来代表签到,0代表未签到,格式即为:101000111…

另外,bitcount命令后还可以带两个参数表示起始位置和结束位置,注意:是指value值的起始位置,不是值bit的起始位置

2.2 bitpost命令

1.统计0/1出现的起始位置

2.后面还可以带两个参数,指的是字符的起始位置,不是bit的起始位置!

3.BIT批处理

3.1 bitfield key get命令获取某几位且返回一个数

获取k1中值的位,从0开始,获取5个位,返回一个数,u代表无符号,i代表有符号,有符号,1开头就代表负数,0就代表正数!

bitfield k1 get u5 0

3.1 bitfield key set命令去修改值

1.比如,现在k2对应的value为ja

2.修改为jb,b对应的ACII码为98
如下命令代表从第八开始的后八位用98转换成二进制(无符号)来替代

bitfield k2 set u8 8 98

3.3 bitfield key incrby自增

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

相关文章