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)