redisにおけるsetex、setnx、set、getsetコマンドの違いと使用

5897 ワード


一般的なredisコマンドをいくつか紹介します.
SETコマンド
set key value
指定したkeyの値をvalueに設定します.
keyが他の値を格納している場合、SETは古い値を上書きし、タイプを無視します.
127.0.0.1:6379> set testSetKey aaa
OK
127.0.0.1:6379> get testSetKey
"aaa"
127.0.0.1:6379> set testSetKey bbb  #      
OK
127.0.0.1:6379> get testSetKey
"bbb"

 
SETEXコマンド
setex key seconds value
指定したkeyの値をvalueに設定し、keyの有効期限をseconds(秒単位)に設定します.
キーが既に存在する場合、SETEXコマンドは古い値を置き換えます.
127.0.0.1:6379> setex testSetexKey 60 aaa   #        60 
OK
127.0.0.1:6379> get testSetexKey   #       
"aaa"
127.0.0.1:6379> get testSetexKey   #             nil
(nil)
127.0.0.1:6379> setex testSetexKey 60 aaa
OK
127.0.0.1:6379> get testSetexKey
"aaa"
127.0.0.1:6379> setex testSetexKey 60 bbb    #     
OK
127.0.0.1:6379> get testSetexKey
"bbb"

 
SETNXコマンド
setnx key value
指定したkeyの値をvalueに設定し、keyが存在しない場合にのみkeyの値を設定します.
setnx(SET if Not eXists)コマンドは、指定したキーが存在しない場合、キーに指定した値を設定します.
設定に成功し、1を返します.設定に失敗し、0を返します.
127.0.0.1:6379> setnx testSetnxKey aaa
(integer) 1
127.0.0.1:6379> get testSetnxKey
"aaa"
127.0.0.1:6379> setnx testSetnxKey bbb  #  key    ,  0
(integer) 0
127.0.0.1:6379> get testSetnxKey
"aaa"

 
GETSETコマンド
getset key value
指定したkeyの値をvalueに設定し、keyの古い値(old value)を返します.
指定したkeyの古い値を返します.キーに古い値がない場合、キーが存在しない場合はnilを返します.
keyが存在するが文字列タイプではない場合、エラーが返されます.
127.0.0.1:6379> getset testGetsetKey aaa  #      ,   nil
(nil)
127.0.0.1:6379> get testGetsetKey
"aaa"
127.0.0.1:6379> getset testGetsetKey bbb  #     
"aaa"
127.0.0.1:6379> get testGetsetKey
"bbb"