redis学习

redis的字符串string操作命令

2019-07-22  本文已影响0人  程序员小饭

1:set key value [ex 秒数]/[px 毫秒数] [nx] /[xx]

如: set a 1 ex 10 , 10秒有效
set a 1 px 9000 , 9秒有效(后面的值为毫秒)
nx: 表示key不存在时,执行操作(默认都是nx)
xx: 表示key存在时,执行操作

2:mset multi set 一次性设置多个键值(没法设置过期时间,如果想定期清理需要用别的技术方案)

例: mset key1 v1 key2 v2 ....

mset a 1 b 2 ex 10 无法设置过期时间 会把ex当做一个key去处理 值为10

3:get key 获取key的值(前面通过set和mset的值都可以通过get命令看到)

4:mget key1 key2 ..keyn 获取多个key的值

5:setrange key offset value(把字符串的offset偏移字节,改成value) 其实也就是指定位置去替换字符串 有编程经验的同学应该很容易理解

set test hello

setrange test 5 a

get test 结果 helloa

setrange test 10 a

get结果为 helloa\x00\x00\x00\x00a 看来如果设置的offset超过了字符串本身的长度范围,则会用空格来补全

6:append key value 把value追加到key的原值上

append test bbb 如果test以前的值是aaa 则现在

7:getrange key start stop 是获取字符串中 [start, stop]范围的值(有点类似于php中的subst,但是还是不太一样)

对于字符串的下标,左数从0开始,右数从-1开始

如 test的值为 abcdef

getrange test 0 3 结果为 abcd
getrange test -5 -1 bcdef -5就说从右往左数第五个字符b -1 就是从右往左数第一个字符f 所以结果为bcdef
在这个例子中 getrange test -5 -1 等价于 getrange test 1 5

8:getset key newvalue

获取并返回旧值,设置新值

接上面的例子 如果test为abcdef
127.0.0.1:6379> getset test 12345
"abcdef"
127.0.0.1:6379> get test
"12345"

9:incr key 指定的key的值加1,并返回加1后的值

1):不存在的key当成0,再incr操作
2): 范围为64有符号

incrby key number 作用同上 只不过是指定值增加而已

incrbyfloat key floatnumber 作用同上 只不过用于处理浮点数而已

10:decr key 作用和incr相反,同时也支持decrby key number 但是无float类型

11:关于字符串的位操作命令(bit)

1)getbit key offset 获取值的二进制表示,对应位上的值(从左,从0编号)
2)setbit key offset value 设置offset对应二进制位上的值

注意:如果offset过大,则会在中间填充0,offset最大2^32-1,可推出最大的的字符串为512M

应用:将大写字母转换为小写
字母A(65) 16进制为:?01000001?
字母a(97) 16进制为:?01100001
则可以看出大写转小写 则把索引为2的位设置为1即可, setbit test 2 1
小写转大写,把索引为2的位设置为0即可? setbit test 2 0

3)bitop operation destkey key1 [key2 ...] 对key1,key2..keyN作operation,并将结果保存到 destkey 上。operation 可以是 AND、OR、NOT、XOR
4)bitop operation destkey key1 [key2 ...] 对key1,key2..keyN作operation,并将结果保存到 destkey 上。operation 可以是 AND 、 OR 、 NOT 、 XOR

对于not操作,key不能写多个

setbit lower 7 0
setbit lower 2 1
构造一个 0010 0000 任何字母只要和他取或(or) 关系,则变成小写字母
set test Q
bitop or result test lower
get result的结果为q

同理,一个小写字母转换为大写字母的也很容易,只需要提前构造1101 1111(upper)

bitop and result test upper则可以把小写字母转换为大写字母

上一篇下一篇

猜你喜欢

热点阅读