Redis命令 - Strings命令组常用命令

1、Set命令

SET key value [EX seconds] [PX milliseconds] [NX|XX]

1.1 参数说明:

EX seconds: 
	设置key的过期时间,单位时秒
	
PX milliseconds: 
	设置key的过期时间,单位时毫秒
	
NX: 
	只有key不存在的时候,才会设置key的值
	
XX: 
	只有key存在的时候,才会设置key的值

1.2 set key value nx 可以完全取代setnx命令

setnx key value
如果key不存在,才将key设置值为value。这种情况下等同SET命令。 当key存在时,什么也不做。

1.3 set key value [EX seconds] 可以完全取代setex命令

setex key seconds value
设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期

setex key seconds value等同于下面2条命令,setex是原子的。相比连续执行2条命令,setex更快
SET key value
EXPIRE key seconds

1.4 set key value [PX milliseconds] 可以完全取代 PSETEX命令

PSETEX key milliseconds value
PSETEX和SETEX一样,唯一的区别是到期时间以毫秒为单位,而不是秒

2、Set命令示例

2.1 设置一个key value

set key value
Redis命令 - Strings命令组常用命令_第1张图片

2.2 SET命令设置一个key value以及过期时间

set key value ex seconds

设置一个key是tester,value是lisi,20秒过期。有效期内查询值返回lisi,过期后查询返回null
Redis命令 - Strings命令组常用命令_第2张图片

2.3 SetEx命令设置一个key value以及过期时间

setex key seconds value

设置一个key是tester,value是wangwu,30秒过期。有效期内查询值返回lisi,过期后查询返回null

Redis命令 - Strings命令组常用命令_第3张图片
SETEX命令设置的有效时间,查询剩余有效时间,使用命令TTL

TTL key

设置一个key value,有效时间是60秒,用TTL查询剩余有效时间,还剩56秒
Redis命令 - Strings命令组常用命令_第4张图片

2.4 PSETEX命令设置一个key value以及过期时间

跟SETEX唯一区别是到期时间单位是以毫秒为单位。查询剩余有效时间使用PTTL。
可以看到,当没有过期时,返回剩余有效时间,当过期时,返回-2,代表已经过期。如果是永久有效,将返回-1。
Redis命令 - Strings命令组常用命令_第5张图片
Redis命令 - Strings命令组常用命令_第6张图片

2.5 SET命令:key不存在才设置value的值

set key value nx

先new了一个student的key,当使用set student zhangsan nx时,就会返回null,因为该key已经存在,并且当key已经存在的时候就什么都不做,值并没有变,还是zhangsan
Redis命令 - Strings命令组常用命令_第7张图片

那么如果是不存在的key,就会设置值成功
Redis命令 - Strings命令组常用命令_第8张图片

2.6 SETNX命令:key不存在才设置value的值

SETNX命令效果同set key value nx

SETNX命令返回值:

  • 1:代表key成功被设置
  • 0:代表此key已存在,什么都不会做。查询此key的值,还是原本的值zhangsan
    Redis命令 - Strings命令组常用命令_第9张图片

2.7 SET命令:key存在时才设置value的值

set key value xx
返回值:key存在被设置,返回OK; key不存在,返回null

key student已存在,设置值为xiu,设置成功返回OK
key nn不存在,设置值为mei,设置失败,返回null

Redis命令 - Strings命令组常用命令_第10张图片

3、getset命令:赋新值取旧值

getset key value

先new一个key是no,value是123,再使用getset取旧值的同时赋新值456,操作完之后,使用get查询no的值,是456。

注:当getset命令查不到key时,会返回null

Redis命令 - Strings命令组常用命令_第11张图片

4、incr:自增1

incr key
返回值是增加之后的value

new一个key叫no,值为0,然后执行incr no命令

注:上面的例子已创建了key no,可以使用del命令删除key,也可以直接set no的值为0,方便继续下面的示例。

可见,每执行一次incr命令,value就会自增1
Redis命令 - Strings命令组常用命令_第12张图片

5、incrby:指定增加的值

incrby key increment
返回值:增加之后的value值

no的值是0,执行incrby命令,指定要增加多少,效果如下
Redis命令 - Strings命令组常用命令_第13张图片

6、decr:自减1

decr key
返回值是减小之后的value

new一个key叫no,值为10,然后执行decr no命令

注:上面的例子已创建了key no,可以使用del命令删除key,也可以直接set no的值为10,方便继续下面的示例。

可见,每执行一次decr命令,value就会自减1
Redis命令 - Strings命令组常用命令_第14张图片
如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。这个操作最大支持在64位有符号的整型数字。

Redis命令 - Strings命令组常用命令_第15张图片

7、decrby:指定减少的值

decrby key decrement
返回值:减少之后的value值

no的值是100,执行decrby命令,指定要减少多少,效果如下
Redis命令 - Strings命令组常用命令_第16张图片

8、MSET命令:设置多个key value

MSET key value [key value]

设置多组key value
Redis命令 - Strings命令组常用命令_第17张图片

9、MSETNX命令:当key不存在时,设置key的值

效果同setnx,只不过msetnx是一次命令操作多组keyvalue而已
返回值:

  • 1:所有的key被设置成功才会返回1
  • 0:只要存在一个key已存在没被设置成功,就会返回0

10、Append命令:

如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况 APPEND 将类似于 SET 操作。

append key value
返回值:返回append后字符串值(value)的长度。

10.1 key已经存在且value是字符串类型

Redis命令 - Strings命令组常用命令_第18张图片

10.2 key不存在

Redis命令 - Strings命令组常用命令_第19张图片

你可能感兴趣的:(Redis,redis,java,缓存)