redis的字符串string操作命令
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则可以把小写字母转换为大写字母