Redis基本操作命令学习(二)之对String类型数据操作命令

大家都知道String类型是Redis数据库常用的一种,今天学习了一下对String类型数据的操作命令,做一下记录,
我们在Redis基本操作命令学习(一)中学习的操作命令都可以用来操作String类型数据。
1.批量添加、获取key(mget key1 key2 key3 … / mset key1 value1 key2 value2 …)

127.0.0.1:6379> mset demo1 google demo2 baidu demo3 kuake
OK
127.0.0.1:6379> keys *
1) "demo3"
2) "demo1"
3) "demo2"
127.0.0.1:6379> mget demo1 demo2 demo3
1) "google"
2) "baidu"
3) "kuake"

2.设置key的有效期( set key value [ex 秒数] / [px 毫秒数] [nx ] / [ xx] )
nx:表示key不存在时执行,当key已存在时不执行
xx:表示不管key是否存在都会执行;如果key已存在,则会把此key覆盖;如果key不存在,则新建key

127.0.0.1:6379> set demo1 google px 300000 nx
OK
127.0.0.1:6379> pttl demo1    // 查看key的有效期
(integer) 294152
127.0.0.1:6379> set demo1 google px 300000 nx   // key已存在,再次执行key时会执行失败
(nil)
127.0.0.1:6379> set demo1 google px 300000 xx  //  key已存在,再次执行key时会把之前的key覆盖
OK
127.0.0.1:6379> pttl demo1
(integer) 296960
127.0.0.1:6379> set demo2 baidu ex 100 nx
OK
127.0.0.1:6379> get demo2
"baidu"
127.0.0.1:6379> pttl demo2
(integer) 87889
127.0.0.1:6379> ttl demo2
(integer) 82
127.0.0.1:6379> ttl demo2
(integer) 80

3.在key数据末尾做追加操作( append key value)

 127.0.0.1:6379> set demo BaiDu  // 先新建一个key
 OK
 127.0.0.1:6379> get demo 
 "BaiDu"
 127.0.0.1:6379> append demo -360 // 在key为demo的数据末尾追加上 -360
 (integer) 9                      // 返回追加后key代表的数据的总长度
 127.0.0.1:6379> get demo 
"BaiDu-360"   // 数据追加成功

4.用新值替换并返回原来的key值( getset key newValue)

127.0.0.1:6379> getset demo google  // 用新值 google 代替原值 BaiDu-360,后并把原值返回
"BaiDu-360"
127.0.0.1:6379> get demo            // 查看demo值确实被更新了
"google"

5.对key值做截取操作( getrange key start stop )
字符串左侧下标从0开始,右侧下标从-1开始,start :代表起始下标,
stop:代表结束下标,截取时起始位置和结束位置的下标都包含在截取范围内
如果 start > stop ,则返回空字符串
如果 start >= length ,则返回空字符串
如果 stop >= length ,则截取至字符串结尾
如果 start 在 stop 右侧,则返回空字符串
总之:start 始终在 stop 左侧且不超过字符串长度(length)时,可以正常返回数据

127.0.0.1:6379> append demo -alibaba   // 先追加数值,以便看到更明确的进行截取操作
(integer) 14
127.0.0.1:6379> get demo
"google-alibaba"
----------------------
value值: g   o   o   g   l   e  -  a  l  i  b   a   b   a
下标:     0   1   2   3   4   5  6  7  8  9  10  11  12  13 
下标:    -14 -13 -12 -11 -10 -9 -8 -7 -6 -5  -4  -3  -2  -1 
----------------------
127.0.0.1:6379> getrange demo 2 6 
"ogle-"
127.0.0.1:6379> getrange demo 5 9
"e-ali"
127.0.0.1:6379> getrange demo  5 5
"e"
127.0.0.1:6379> getrange demo  5 4  // stop  大于start返回空
""
127.0.0.1:6379> getrange demo  -1 3 // start  在 stop 右侧,则返回空字符串
""
127.0.0.1:6379> getrange demo  3 -5
"gle-ali"
127.0.0.1:6379> getrange demo  14 14  // start 和stop 大于length 
""
127.0.0.1:6379> getrange demo  0 -14
"g"
127.0.0.1:6379> getrange demo  2 -14
""
127.0.0.1:6379> getrange demo  -14 -5
"google-ali"

6.对key的value值做替换操作( setrange key offset newValue)
offset :被替换值的下标,只能为正数,不能为负数(只能从字符串左侧开始查找,不能从右侧开始)
如果 offset > length时,则会自动在字符串末尾添加\x00(相当于’\x00’代表一个字符)

127.0.0.1:6379> get demo
"google-alibaba"
127.0.0.1:6379> setrange demo 1 H
(integer) 14                          // 返回值为key对应值的总长度
127.0.0.1:6379> get demo
"gHogle-alibaba"
127.0.0.1:6379> setrange demo -4 B    // 下标不能为负数
(error) ERR offset is out of range
127.0.0.1:6379> setrange demo 17 B
(integer) 18                          // 返回替换后字符串新的长度
127.0.0.1:6379> get demo
"gHogle-alibaba\x00\x00\x00B"

7.对value值进行自增或自减操作( incr key、 incrby key num、 decr key、decrby key num )
注:value值必须是数值,不能是字母或汉字或其他

127.0.0.1:6379> set demo3 5
OK
127.0.0.1:6379> incr demo3  // incr表示自增1
(integer) 6
127.0.0.1:6379> incr demo3
(integer) 7
127.0.0.1:6379> incrby demo3 5  // incrby 表示增加指定的数值
(integer) 12
127.0.0.1:6379> incrby demo3 5
(integer) 17
127.0.0.1:6379> decr demo3  // decr 表示自减1,自减1后value值为16
(integer) 16
127.0.0.1:6379> decr demo3 
(integer) 15 
127.0.0.1:6379> decrby demo3 4    // decrby 表示减去指定的数值
(integer) 11
127.0.0.1:6379> set demo4 a
OK
127.0.0.1:6379> get demo4
"a"
127.0.0.1:6379> incr demo4 // 不能对字母进行自增操作
(error) ERR value is not an integer or out of range

8.对value值位进行操作(setbit key offset value / getbit key offset)
注意:当offset值大于字符串长度时 或者操作的key不存在时,返回0;
value取值为 0 或 1;
更多的是用来操作value值为二进制数的key

127.0.0.1:6379> set demo4 a
OK
127.0.0.1:6379> get demo4
"a"
----------------
解析: a的二进制数是 0110 0001 
-----------------
127.0.0.1:6379> getbit demo4 0
(integer) 0
127.0.0.1:6379> getbit demo4 1
(integer) 1
127.0.0.1:6379> getbit demo4 2
(integer) 1
127.0.0.1:6379> getbit demo4 3
(integer) 0
127.0.0.1:6379> getbit demo4 4
(integer) 0
127.0.0.1:6379> getbit demo4 5
(integer) 0
127.0.0.1:6379> getbit demo4 6
(integer) 0
127.0.0.1:6379> getbit demo4 7
(integer) 1
127.0.0.1:6379> setbit demo4 1 0
(integer) 1
127.0.0.1:6379> get demo4
"!"

9.查看字符串长度(strlen)

你可能感兴趣的:(Redis)