- j3_liuliang
- Redis常用API即應用場景開始系列(key),如果覺得有用可以關注博主,不定時更新哦!
Redis Type 命令用於返回 key 所儲存的值的型別。
語法
:
127.0.0.1:6379> TYPE KEY_NAME
可用版本
: >= 1.0.0
返回值
返回 key 的資料型別,資料型別有:
案例:
127.0.0.1:6379> set stringkey stringvalue #設定String型別
OK
127.0.0.1:6379> type stringkey #返回String
string
127.0.0.1:6379> lpush listkey list01 list02 #設定list型別
(integer) 2
127.0.0.1:6379> type listkey #返回list
list
127.0.0.1:6379> sadd setkey setvalue #設定set型別
(integer) 1
127.0.0.1:6379> type setkey #返回set
set
127.0.0.1:6379> zadd zsetkey 1 "liuliang" #設定zset型別
(integer) 1
127.0.0.1:6379> type zsetkey #返回zset
zset
127.0.0.1:6379> hset hashkey name liuliang #設定hash型別
(integer) 1
127.0.0.1:6379> type hashkey #返回hash
hash
Redis PEXPIREAT 命令用於設定 key 的過期時間,
億毫秒記
。key 過期後將不再可用。
語法
127.0.0.1:6379> PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP
可以版本:
>= 1.0.0
返回值:
設定成功返回 1 。 當 key 不存在或者不能為 key 設定過期時間時(比如在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過期時間)返回 0 。
案例
127.0.0.1:6379> set k3 v3 #建立key 並賦值
OK
127.0.0.1:6379> pexpireat k3 5000000000000 #設定過期時間,大於等於這個輸才行1000000000000
(integer) 1
127.0.0.1:6379> ttl k3 #檢視剩餘過期時間
(integer) 3398395525 #單位秒
127.0.0.1:6379> ttl k3
(integer) 3398395522
127.0.0.1:6379>
Redis RENAME命令用於修改 key 的名稱 。
語法
127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME
可以版本:
>= 1.0.0
返回值:
改名成功時提示 OK ,失敗時候返回一個錯誤。
當 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在時,返回一個錯誤。 當 NEW_KEY_NAME 已經存在時, RENAME 命令 將覆蓋舊值。
案例
################### 第一種情況:重新命名的新key不存在 ###################
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> rename j3-liuliang liuliang #重新命名key,新key不存在
OK
127.0.0.1:6379> exists j3-liuliang #exists判斷key是否存在,0不存在,1存在
(integer) 0
127.0.0.1:6379> exists liuliang
(integer) 1
################### 第二種情況:重新命名的新key存在 ###################
127.0.0.1:6379> set xiaozhang 28 #設定key並賦值
OK
127.0.0.1:6379> rename liuliang xiaozhang #重新命名key(liuliang),新key(xiaozhang)存在
OK #重新命名成功
127.0.0.1:6379> exists liuliang #檢視key是否存在
(integer) 0
127.0.0.1:6379> exists xiaozhang
(integer) 1
127.0.0.1:6379> get xiaozhang #可以發現,如果重新命名的key存在,則會覆蓋新key的值
"18"
Redis PERSIST 命令用於移除給定 key 的過期時間,使得 key 永不過期。
語法
127.0.0.1:6379> PERSIST KEY_NAME
可以版本:
>= 2.2.0
返回值:
當過期時間移除成功時,返回 1 。 如果 key 不存在或 key 沒有設定過期時間,返回 0 。
案例
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> expire j3-liuliang 100 #設定過期時間
(integer) 1
127.0.0.1:6379> ttl j3-liuliang #檢視剩餘過期時間
(integer) 98
127.0.0.1:6379> persist j3-liuliang #移除key的過期時間
(integer) 1
127.0.0.1:6379> ttl j3-liuliang #檢視key狀態,-1永久有效
(integer) -1
Redis MOVE 命令用於將當前資料庫的 key 移動到給定的資料庫 db 當中。
語法
127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE
可以版本:
>= 1.0.0
返回值:
移動成功返回 1 ,失敗則返回 0 。
案例
################### 第一種情況:key存在於當前資料庫中(移動成功,當前庫不存在key目標庫存在key) ###################
127.0.0.1:6379> select 0 #切換資料庫,預設就是 0 號資料庫
OK
127.0.0.1:6379> set j3-liuliang 18 #設定key並複製
OK
127.0.0.1:6379> move j3-liuliang 1 #移動key到 1 號資料庫
(integer) 1
127.0.0.1:6379> exists j3-liuliang #檢視當前資料庫是否存在key
(integer) 0
127.0.0.1:6379> select 1 #切換資料庫
OK
127.0.0.1:6379[1]> exists j3-liuliang #檢視當前資料庫是否存在key
(integer) 1
127.0.0.1:6379[1]>
################### 第二種情況:key不存在於當前資料庫中(移動失敗,因為key根本不存在) #################
127.0.0.1:6379> flushall #清空所有資料庫資料 0-15
OK
127.0.0.1:6379> exists j3-liuliang #檢視當前資料庫是否存在key
(integer) 0
127.0.0.1:6379> move j3-liuliang 1 #將一個不存在的key移動到 1 號資料庫
(integer) 0 #返回 0 說明已經失敗了
127.0.0.1:6379> select 1 #切換資料庫
OK
127.0.0.1:6379[1]> exists j3-liuliang #檢視當前資料庫是否存在key
(integer) 0 #顯然不存在
127.0.0.1:6379[1]>
################### 第三種情況:當源資料庫和目標資料庫有相同的 key 時(結論移動失敗,不做任何變化) ####
127.0.0.1:6379[1]> flushall #清空所有資料庫資料 0-15
OK
127.0.0.1:6379[1]> set j3-liuliang 28 #在當前資料庫設定一個key
OK
127.0.0.1:6379[1]> select 0 #切換資料庫
OK
127.0.0.1:6379> set j3-liuliang 18 #設定和上一個資料庫中相同的一個key,值不要一樣,便於區分
OK
127.0.0.1:6379> move j3-liuliang 1 #將當前資料庫中key移動到上一個資料庫中
(integer) 0 #發現,移動失敗,說明,當兩個資料庫中有相同的key時,會移動失敗
127.0.0.1:6379> get j3-liuliang #獲取當前資料庫中key,發現沒有變化
"18"
127.0.0.1:6379> select 1 #切換資料庫
OK
127.0.0.1:6379[1]> get j3-liuliang #發現也沒有變化
"28"
127.0.0.1:6379[1]>
Redis RANDOMKEY 命令從當前資料庫中隨機返回一個 key 。
語法
127.0.0.1:6379> RANDOMKEY
可以版本:
>= 1.0.0
返回值:
當資料庫不為空時,返回一個 key 。 當資料庫為空時,返回 nil 。
案例
127.0.0.1:6379> flushall #清空所有資料庫資料
OK
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5 #一次設定多個key value
OK
127.0.0.1:6379> keys * #檢視資料庫說有key
1) "k4"
2) "k5"
3) "k1"
4) "k2"
5) "k3"
127.0.0.1:6379> randomkey #隨機輸出一個key
"k4"
127.0.0.1:6379> randomkey
"k4"
127.0.0.1:6379> randomkey
"k4"
127.0.0.1:6379> randomkey
"k1"
127.0.0.1:6379> flushall #情況所有資料庫資料
OK
127.0.0.1:6379> randomkey #發現輸出為 nil
(nil)
127.0.0.1:6379>
Redis DUMP 命令用於序列化給定 key ,並返回被序列化的值。
語法
127.0.0.1:6379> DUMP KEY_NAME
可以版本:
>= 2.6.0
返回值:
如果 key 不存在,那麼返回 nil 。 否則,返回序列化之後的值。
案例
127.0.0.1:6379> flushall #清空所有資料庫
OK
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> dump j3-liuliang #將給定的key序列化
"\x00\xc0\x12\t\x00\x9d+/\x83A\xa7'\x9a" #key序列後的值
127.0.0.1:6379> dump not-exists-key #序列化不存在的值
(nil) #返回nil
127.0.0.1:6379>
Redis TTL 命令以秒為單位返回 key 的剩餘過期時間。
語法
127.0.0.1:6379> TTL KEY_NAME
可以版本:
>= 1.0.0
返回值:
當 key 不存在時,返回 -2 。 當 key 存在但沒有設定剩餘生存時間時,返回 -1 。 否則,以毫秒為單位,返回 key 的剩餘生存時間。
**注意:**在 Redis 2.8 以前,當 key 不存在,或者 key 沒有設定剩餘生存時間時,命令都返回 -1 。
案例
127.0.0.1:6379> flushall #清空所有資料庫資料
OK
127.0.0.1:6379> ttl j3-liuliang #判斷一個不存在的key
(integer) -2
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> ttl j3-liuliang #檢視存在的key但沒有設定過期時間
(integer) -1
127.0.0.1:6379> expire j3-liuliang 100 #給存在的key設定過期時間
(integer) 1
127.0.0.1:6379> ttl j3-liuliang #檢視剩餘過期時間(秒)
(integer) 98
127.0.0.1:6379>
Redis Expire 命令用於設定 key 的過期時間。key 過期後將不再可用。
語法
127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
可以版本:
>= 1.0.0
返回值:
設定成功返回 1 。 當 key 不存在或者不能為 key 設定過期時間時(比如在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過期時間)返回 0 。
案例
127.0.0.1:6379> flushall #清空所有資料庫資料
OK
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> expire j3-liuliang 100 #給存在的key設定過期時間
(integer) 1
127.0.0.1:6379> ttl j3-liuliang #檢視剩餘過期時間(秒)
(integer) 88
127.0.0.1:6379>
以上範例中我們為鍵 j3-liuliang設定了過期時間為 100秒,100秒後該鍵會自動刪除。
Redis DEL 命令用於刪除已存在的鍵。不存在的 key 會被忽略。
語法
127.0.0.1:6379> DEL KEY_NAME
可以版本:
>= 1.0.0
返回值:
被刪除 key 的數量。
案例
127.0.0.1:6379> flushall #清空所有資料庫資料
OK
127.0.0.1:6379> set k1 v1 #設定key並賦值
OK
127.0.0.1:6379> del k1 #刪除key
(integer) 1 #返回刪除的數量
127.0.0.1:6379> del k2
(integer) 0 #返回刪除的數量 0 說明沒有改變什麼,表明該值不存在
127.0.0.1:6379>
Redis PTTL命令以
毫秒
為單位返回 key 的剩餘過期時間。
語法
127.0.0.1:6379> PTTL KEY_NAME
可以版本:
>= 2.6.0
返回值:
當 key 不存在時,返回 -2 。 當 key 存在但沒有設定剩餘生存時間時,返回 -1 。 否則,以毫秒為單位,返回 key 的剩餘生存時間。
**注意:**在 Redis 2.8 以前,當 key 不存在,或者 key 沒有設定剩餘生存時間時,命令都返回 -1 。
案例
127.0.0.1:6379> flushall #清空所有資料庫資料
OK
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> expire j3-liuliang 100 #設定過期時間
(integer) 1
127.0.0.1:6379> pttl j3-liuliang #返回key的剩餘時間,毫秒
(integer) 91266
127.0.0.1:6379> pttl key #檢視不存在key的剩餘時間,毫秒
(integer) -2
127.0.0.1:6379> set k1 v1 #設定key並賦值
OK
127.0.0.1:6379> pttl k1 #檢視沒有設定過期時間的key
(integer) -1
127.0.0.1:6379>
Redis Renamenx 命令用於在新的 key 不存在時修改 key 的名稱 。
語法
127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME
可以版本:
>= 1.0.0
返回值:
修改成功時,返回 1 。 如果 NEW_KEY_NAME 已經存在,返回 0 。
案例
################### 第一種情況:newkey不存在(改名成功) ###################
127.0.0.1:6379> flushall #清空資料庫
OK
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> renamenx j3-liuliang liuliang #將key設定新值,新值不存在
(integer) 1
127.0.0.1:6379> exists j3-liuliang #判斷老key是否還存在
(integer) 0
127.0.0.1:6379> get j3-liuliang #判斷是否還可以取到老key的值
(nil)
127.0.0.1:6379> exists liuliang #判斷新key是否存在
(integer) 1
127.0.0.1:6379> get liuliang #獲取新key的值
"18"
127.0.0.1:6379>
################### 第二種情況:newkey存在(改名失敗,不做變化) ###################
127.0.0.1:6379> flushall #清空資料庫
OK
127.0.0.1:6379> set k1 v1 #設定key並賦值
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> renamenx k1 k2 #將key設定新值,新值存在
(integer) 0 #重新命名失敗
127.0.0.1:6379> get k1 #沒有任何變化
"v1"
127.0.0.1:6379> get k2 #沒有任何變化
"v2"
127.0.0.1:6379>
Redis EXISTS 命令用於檢查給定 key 是否存在。
語法
127.0.0.1:6379> EXISTS KEY_NAME
可以版本:
>= 1.0.0
返回值:
若 key 存在返回 1 ,否則返回 0 。
案例
127.0.0.1:6379> flushall #清空資料庫
OK
127.0.0.1:6379> exists k1 #判斷key是否存在
(integer) 0 #不存在
127.0.0.1:6379> set k1 v1 #設定key並賦值
OK
127.0.0.1:6379> exists k1 #判斷key是否存在
(integer) 1 #存在
127.0.0.1:6379>
EXPIREAT 的作用和 EXPIRE 類似,都用於為 key 設定過期時間。 不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳(unix timestamp)。
Redis Expireat 命令用於以 UNIX 時間戳(unix timestamp)格式設定 key 的過期時間。key 過期後將不再可用。
語法
127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
可以版本:
>= 1.0.0
返回值:
設定成功返回 1 。 當 key 不存在或者不能為 key 設定過期時間時(比如在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過期時間)返回 0 。
案例
127.0.0.1:6379> flushall #清空資料庫
OK
127.0.0.1:6379> set j3-liuliang 18 #設定key並賦值
OK
127.0.0.1:6379> expireat j3-liuliang 1293840000 #給key設定過期時間,時間是時間戳
(integer) 1
127.0.0.1:6379> ttl j3-liuliang #檢視剩餘過期時間
(integer) -2
127.0.0.1:6379> exists j3-liuliang #檢視key是否還存在
(integer) 0
127.0.0.1:6379>
Redis Keys 命令用於查詢所有符合給定模式 pattern 的 key 。。
語法
127.0.0.1:6379> KEYS PATTERN
可以版本:
>= 1.0.0
返回值:
符合給定模式的 key 列表 (Array)。
案例
127.0.0.1:6379> flushall #清空資料庫
OK
127.0.0.1:6379> set k1 v1 #建立一些key
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set m1 n1
OK
127.0.0.1:6379> set m2 n2
OK
127.0.0.1:6379> keys k* #查詢所有符合 k* 的key
1) "k1"
2) "k2"
127.0.0.1:6379> keys m* #查詢所有符合 m* 的key
1) "m2"
2) "m1"
127.0.0.1:6379> keys * #查詢所有的key
1) "m2"
2) "k1"
3) "m1"
4) "k2"
127.0.0.1:6379>