Redis 字符串 string
前面介绍了redis的五种数据类型以及一些通用的命令,从本文开始,我们分别来看一下这几种数据类型对应的命令操作。从字符串string开始。
append
使用append命令时,如果key已经存在,则会直接追加到value后面,如果key不存在,则会先创建一个value为空的key,然后再追加。
1 | 127.0.0.1:6379> append name hello |
decr
decr命令可以实现对value的减一操作。如果key不存在,则key对应的初始值会被设置为0,如果key的value不是数字,则会报错。实验如下:
1 | 127.0.0.1:6379> set age 20 |
decrby
decrby 和 decr 类型,不同的是 decrby 可以指定步长。如下:
1 |
|
get
get命令就是用来获取指定key的value。如果不存在则返回nil。如下:
1 | 127.0.0.1:6379> get age |
getset
getset命令可以用来获取key所对应的value,并对key进行重置。如下:
1 | 127.0.0.1:6379> set name ouYang |
由上面的执行结果可以看出,如果getset执行前,该key已经存在了,那么返回的是 oldValue, 并重置为newValue。如果该key不存在,则返回nil 并重置为newValue.
incr
incr 操作可以对指定key的value执行加1操作。如果指定的key不存在,那么在加1操作之前,会先将key对应的value设置为0,如果key的value不是数字,则会报错。如下:
1 | 127.0.0.1:6379> incr age |
incrby
incrby 和 incr 功能类似,不同的是可以指定增长步长。如下:
1 | 127.0.0.1:6379> get age |
incrbyfloat
incrbyfloat 命令可以用来增长浮点数。如下:
1 | 127.0.0.1:6379> get age |
mget 与 mset
mget与mset分别用来批量设置值和批量获取值。如下:
1 | 127.0.0.1:6379> mset name ooyhao age 23 sex male |
setex
setex 用来给key设置value,同时设置过期时间,等效于先给key设置value,再给key设置过期时间。如下:
1 | 127.0.0.1:6379> setex name 30 zhangsan |
psetex
psetex 的作用和setex类似,不同的是,这里设置过期时间的单位是毫秒值。如下:
1 | 127.0.0.1:6379> psetex age 30000 23 |
setnx
setnx 是set if not exists 的简写,set命令在执行时,如果key已经存在,则新值会覆盖掉旧值,而对于setnx来说,如果key已经存在,则不做任何操作,如果key不存在,则效果等同于set命令。如下:
1 | 127.0.0.1:6379> set name ooyhao |
msetnx
msetnx 兼具了setnx和mset的特性,但是msetnx在执行时,如果有一个key存在,则所有的都不会执行。如下:
1 | 127.0.0.1:6379> keys * |
由上面的例子可以看出,由于name之前已经存在了,所以在执行msetnx的时候。age没有设置成功。
setrange
setrange 用来覆盖一个已经存在的key的value。如下:
1 | 127.0.0.1:6379> set str helloworld |
但是如果已经存在的key所对应的value的长度小于offset。则不足的地方用0来补齐。如下:
1 | 127.0.0.1:6379> set newStr helloredis |
strlen
strlen 命令用来计算key的value的长度。如下:
1 | 127.0.0.1:6379> set name ouYangHao |
关于redis的字符串类型就先介绍到这里,如果需要更加详细的文档,可以移步官方文档:
http://www.redis.cn/commands.html#generic