Redis之Strings

Redis之Strings

1、set、get、setex、setnx

set:设置一个key的value值。
get:获取一个key的value值。
setex:设置一个key的value值,并指定失效时间。
setnx:当key不存在的时候,设置一个key的value值。key存在设置失败。

2、setbit、getbit

setbit:设置key的value(string)在offset处的bit值。
getbit:返回key对应的string在offset处的bit值。

比如我们要设置一个'h'字符,首先得到对应的二进制为01101000,我们只需要设置二进制位为1的位即可。相应的字符'e'
的设置方式也一样。 设置完成后,通过get命令即可获取到这个key的value值,通过getbit可以得到key对应的string在offset处的bit值。

3、bitcount、bitpos

bitcount:统计字符串被设置为1的bit数 

bitpos:返回字符串里面第一个被设置为1或者0的bit位

bitpos可以指定start和end范围进行查找。
比如hello的二进制为01101000 01100101 01101100 01101100 01101111

获取hello第一个被设置为0的bit位

获取hello第一个被设置为1的bit位

从第三个字符开始,获取hello第一个被设置为0的bit位

从第三个字符开始,获取hello第一个被设置为1的bit位

4、BITFIELD

bitfield有三个子指令:get、set、incrby。

hello对应的位为

从第一个位开始取4个位,结果是无符号数

从第三个位开始取3个位,结果是无符号数

从第一个位开始取4个数,结果是有符号数

从第三个位开始取3个位,结果是有符号数

incrby

用来对指定范围的位进行自增操作。 如果增加了正数,就会出现向上溢出。如果增加了负数,就会出现向下溢出。Redis默认处理方式是折返。如果出现了溢出,就将溢出的符号位丢掉。如果是8位无符号数 255(11111111),溢出后就会变成0。如果是8位有符号数127(01111111),溢出后就会变 成-128

hello对应的位为

bitfield指令提供了溢出策略子指令overflow。有下面三种 

  • 折返(wrap)。
  • 失败(fail):报错不执行。
  • 饱和截断(sat):超过了范围就停留在最大值或者最小值。

失败(fail)

饱和截断(sat)

 

原文地址:https://www.cnblogs.com/beanbag/p/13621093.html