String类型的常用操作命令,我分为三部分,一是设置、获取key-value值,二是把String当作Integer进行加减操作,三是大小写转换
目录
二、把String 类型当作 integer 类型进行加减操作
一、设置、获取String的key-value
1.设置 String 的 key value
set key value
2.通过 key 获取 value
get key
3.设置 String 的 key value,并且设置存活时间
set key value [ex 秒数] / [px 毫秒数] [nx]/[xx]
注:nx 表示不存在时执行操作,xx 表示key 必须存在时操作, [ ] 中的内容为可选内容
4.一次性设置多个key-value
mset k1 v1 k2 v2 k3 v3 ...
5.一次性获取多个value
mget k1 k2 k3...
6.把字符串的偏移字节(offset)改成 val
setrange key offset val
offset 小于 字符串最大索引时
127.0.0.1:6379> set i 66666
OK
127.0.0.1:6379> get i
"66666"
127.0.0.1:6379> setrange i 2 x
(integer) 5
127.0.0.1:6379> get i
"66x66"
offset 大于 字符串最大索引时,多出来的用 \x00 填补
127.0.0.1:6379> set i 66666
OK
127.0.0.1:6379> get i
"66666"
127.0.0.1:6379> setrange i 8 o
(integer) 9
127.0.0.1:6379> get i
"66666\x00\x00\x00o"
7.把value追加到 key 的原值上
append key value
127.0.0.1:6379> set i 666
OK
127.0.0.1:6379> get i
"666"
127.0.0.1:6379> append i @@
(integer) 5
127.0.0.1:6379> get i
"666@@"
8.获取字符串的子字符串
getrange key start end
注:包含 start 和 end
字符串从 左→右 下标从 0 开始,从 右←左 下标从 -1 开始
127.0.0.1:6379> set me goodBoy
OK
127.0.0.1:6379> get me
"goodBoy"
127.0.0.1:6379> getrange me 0 3 //获取前四位
"good"
127.0.0.1:6379> getrange me -3 -1 //获取后三位
"Boy"
127.0.0.1:6379> getrange me 0 -4 //获取除了后三位的子字符串
"good"
9.获取旧值设置新值
getset me Boy
127.0.0.1:6379> getset me Boy
"goodBoy"
127.0.0.1:6379> get me
"Boy"
二、把String 类型当作 integer 类型进行加减操作
10.增加和减少操作
incr key //key 的值增加1
decr key //key 的值减小1
incrby key 5 //key 的值增加5
decrby key 5 //key 的值减少5
incrbyfloat key 2.5 //key 的值增加浮点数
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> incr age
(integer) 21
127.0.0.1:6379> decr age
(integer) 20
127.0.0.1:6379> incrby age 5
(integer) 25
127.0.0.1:6379> decrby age 5
(integer) 20
127.0.0.1:6379> incrbyfloat age 2.5
"22.5"
三、大小写转换
11.大小写转换
setbit key 2 0/1
127.0.0.1:6379> set char A
OK
127.0.0.1:6379> get char
"A"
127.0.0.1:6379> setbit char 2 1 //大写变小写
(integer) 0
127.0.0.1:6379> get char
"a"
127.0.0.1:6379> setbit char 2 0 //小写变大写
(integer) 1
127.0.0.1:6379> get char
"A"
问题:为什么这么写就能变换大小写?
ASCII码 二进制
A 65 0100 0001
a 97 0110 0001
从二进制数中看的出来 A 和 a 相差 32,也就是 2 的 5 次方,于是修改第 6 位的值就可以进行 A a 转换
如:A 的第 6 位改成 1,就变成了 a,a → A 也是一个道理
因此通过改变偏移量可以转化大小写(上面说的第 6 位是根据二进制数从后往前数的,按偏移量数是第 2 位,也就是第 3 个)
12.通过与或运算进行大小写转换
1)把 R → r
127.0.0.1:6379> setbit lower 2 1 //偏移2位,值为1,即 0010 0000
(integer) 0
127.0.0.1:6379> get lower
" "
127.0.0.1:6379> set char R
OK
127.0.0.1:6379> bitop or char char lower // or 即 或 操作,char lower操做后值存在 char 中
(integer) 1
127.0.0.1:6379> get char
"r"
2)小写→大写
小写字符 和 1101 1111 做 and 也即 与 运算