redis 中setex、setnx、set、getset 命令的區別與使用

 

介紹幾個經常使用的redis命令:redis

SET 命令

set key valuespa

設置指定 key 的值爲 value。code

若是 key 已經存儲其餘值, SET 就覆寫舊值,且無視類型。blog

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 (以秒爲單位)。get

若是 key 已經存在, SETEX 命令將會替換舊的值。class

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 valuetest

設置指定 key 的值爲 value,只有在 key 不存在時設置 key 的值。di

setnx(SET if Not eXists) 命令在指定的 key 不存在時,爲 key 設置指定的值。時間

設置成功,返回 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 的舊值。 當 key 沒有舊值時,即 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"
相關文章
相關標籤/搜索