概述
上文中,我们看了一些所有数据类型都通用的一些命令,下面再来看一下一些针对String类型独有的命令
操作String类型数据的一些命令
append
追加字符串,如果key存在的话,就直接在value后面追加内容,如果key不存在,就会先创建一个value是空字符串的数据,然后再追加,具体使用方式如下:
1 | 172.16.12.3:6379> get key1 |
decr
decr命令可以对指定key的value执行减1的操作.
如果key的value不为数字,则会报错
如果key不存在,则key对应的初始值会被置为0, 然后再进行减1的操作
具体使用如下:
1 | 172.16.12.3:6379> set k2 20 |
decrby
和decr差不多,只不过decrby可以指定步长,如下命令,指定减5:
1 | 172.16.12.3:6379> get k2 |
get
get命令用来获取对应key的value,如果不存在,就返回nil,如下:
1 | 172.16.12.3:6379> get k2 |
getrange
跟java的substring类似,用来返回key所对应的value的子串, 需要传入开始的下标和结束的下标
从左往右数每个字符的下标依次是0,1,2,3….
如果是从右往左数的话,下标依次是-1,-2,-3,-4…..
具体使用方式如下:
1 | 172.16.12.3:6379> set k5 helloworld |
getset
getset命令,用来获取指定key所对应的value,并且给这个key设置新的value,具体如下:
1 | 172.16.12.3:6379> get k5 |
incr
incr命令可以对指定key的value进行加1的操作
如果指定key的value不是数字,就会报错
如果指定key不存在,会先将key的value设置为0,然后再加1,最终值也就是1
1 | 172.16.12.3:6379> get k2 |
incrby
和incr命令相似,只是可以指定步,使用方式如下:
1 | 172.16.12.3:6379> get k6 |
incrbyfloat
incrbyfloat命令,用来增长浮点数,如下:
1 | 172.16.12.3:6379> get k6 |
mget与mset
批量操作命令,用来批量设置值和批量获取值,如下:
1 | 172.16.12.3:6379> mset k1 v1 k2 v2 k3 v3 |
setex
setex命令可以给key同时设置value和过期时间,相当于先给key设置value然后再设置一个有效时间,使用方式如下:
1 | 172.16.12.3:6379> setex k1 30 v1 |
psetex
psetex命令和setex类似,只不过设置的时间单位是毫秒,如下:
1 | 172.16.12.3:6379> psetex k1 100000 v1 |
setnx
setnx是 set if not exists, 我们在使用set命令的时候,对于已经存在的key,就会新值覆盖掉旧值
而setnx命令就是说,如果key是存在的,那就不进行任何操作,如果key不存在,那效果跟set命令是一样的,具体使用如下:
1 | 172.16.12.3:6379> get k2 |
msetnx
msetnx具备了setnx和mset的特性, 这里有需要注意的一点,如果有一个key存在,那所有的都不会执行,如下:
1 | 172.16.12.3:6379> get k6 |
因为k6是存在的,所以k7也没执行成功
setrange
setrange命令,用来覆盖一个已经存在的key的value,使用方式如下:
1 | 172.16.12.3:6379> set k1 helloworld |
如果已经存在的key的value长度小于offset,则不足的地方用0补齐,如下:
1 | 172.16.12.3:6379> setrange k1 20 --java |
strlen
strlen命令用来计算指定key对应的value的长度,如下:
1 | 172.16.12.3:6379> strlen k1 |
关于string类型的常用命令,就先写这么多,如果需要用到其他的命令,可以去官方文档中查找