Redis 鍵命令用於管理 redis 的鍵。css
該命令用於在 key 存在時刪除 key。html
127.0.0.1:6379> set w3ckey redis OK 127.0.0.1:6379> EXISTS w3ckey (integer) 1 127.0.0.1:6379> del w3ckey (integer) 1 127.0.0.1:6379> EXISTS w3ckey (integer) 0 127.0.0.1:6379>
DUMP key
序列化給定 key ,並返回被序列化的值。mysql
返回值
若是 key 不存在,那麼返回 nil 。 不然,返回序列化以後的值。redis
127.0.0.1:6379> SET greeting "hello, dumping world!" OK 127.0.0.1:6379> dump greeting "\x00\x15hello, dumping world!\a\x00,\x7f\xe7\xf1%\xed(W" 127.0.0.1:6379> DUMP not-exists-key (nil) 127.0.0.1:6379>
EXISTS key
檢查給定 key 是否存在。sql
返回值
若 key 存在返回 1 ,不然返回 0 。mongodb
redis 127.0.0.1:6379> set runoob-new-key newkey OK redis 127.0.0.1:6379> EXISTS runoob-new-key (integer) 1 redis 127.0.0.1:6379>
EXPIRE key seconds
爲給定 key 設置過時時間,以秒計。shell
返回值
設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0數據庫
redis 127.0.0.1:6379> SET runooobkey redis OK redis 127.0.0.1:6379> EXPIRE runooobkey 60 (integer) 1
以上實例中咱們爲鍵 runooobkey 設置了過時時間爲 1 分鐘,1分鐘後該鍵會自動刪除。swift
EXPIREAT key timestamp
EXPIREAT 的做用和 EXPIRE 相似,都用於爲 key 設置過時時間。 不一樣在於 EXPIREAT 命令接受的時間參數是 UNIX 時間戳(unix timestamp)。cookie
返回值
設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。
redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> EXPIREAT runoobkey 1293840000 (integer) 1 redis 127.0.0.1:6379> EXISTS runoobkey (integer) 0
PEXPIRE key milliseconds
設置 key 的過時時間以毫秒
計。
redis> SET mykey "Hello" "OK" redis> PEXPIRE mykey 1500 (integer) 1 redis> TTL mykey (integer) 1 redis> PTTL mykey (integer) 1498 redis>
PEXPIREAT key milliseconds-timestamp
設置 key 過時時間的時間戳(unix timestamp) 以毫秒計
返回值
設置成功返回 1 。 當 key 不存在或者不能爲 key 設置過時時間時(好比在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過時時間)返回 0 。
redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> PEXPIREAT runoobkey 1555555555005 (integer) 1
KEYS pattern
查找全部符合給定模式( pattern)的 key 。
首先建立一些 key,並賦上對應值:
127.0.0.1:6379> SET runoob1 redis OK 127.0.0.1:6379> SET runoob2 mysql OK 127.0.0.1:6379> SET runoob3 mongodb OK
查找以 runoob 爲開頭的 key:
127.0.0.1:6379> keys runoob* 1) "runoob3" 2) "runoob2" 3) "runoob1"
獲取 redis 中全部的 key 可用使用 *。
127.0.0.1:6379> KEYS * 1) "runoob3" 2) "runoob1" 3) "runoob2"
MOVE key db
將當前數據庫的 key 移動到給定的數據庫 db 當中。
# key 存在於當前數據庫 redis> SELECT 0 # redis默認使用數據庫 0,爲了清晰起見,這裏再顯式指定一次。 OK redis> SET song "secret base - Zone" OK redis> MOVE song 1 # 將 song 移動到數據庫 1 (integer) 1 redis> EXISTS song # song 已經被移走 (integer) 0 redis> SELECT 1 # 使用數據庫 1 OK redis:1> EXISTS song # 證明 song 被移到了數據庫 1 (注意命令提示符變成了"redis:1",代表正在使用數據庫 1) (integer) 1 # 當 key 不存在的時候 redis:1> EXISTS fake_key (integer) 0 redis:1> MOVE fake_key 0 # 試圖從數據庫 1 移動一個不存在的 key 到數據庫 0,失敗 (integer) 0 redis:1> select 0 # 使用數據庫0 OK redis> EXISTS fake_key # 證明 fake_key 不存在 (integer) 0 # 當源數據庫和目標數據庫有相同的 key 時 redis> SELECT 0 # 使用數據庫0 OK redis> SET favorite_fruit "banana" OK redis> SELECT 1 # 使用數據庫1 OK redis:1> SET favorite_fruit "apple" OK redis:1> SELECT 0 # 使用數據庫0,並試圖將 favorite_fruit 移動到數據庫 1 OK redis> MOVE favorite_fruit 1 # 由於兩個數據庫有相同的 key,MOVE 失敗 (integer) 0 redis> GET favorite_fruit # 數據庫 0 的 favorite_fruit 沒變 "banana" redis> SELECT 1 OK redis:1> GET favorite_fruit # 數據庫 1 的 favorite_fruit 也是 "apple"
PERSIST key
移除 key 的過時時間,key 將持久保持。
redis> SET mykey "Hello" OK redis> EXPIRE mykey 10 # 爲 key 設置生存時間 (integer) 1 redis> TTL mykey (integer) 10 redis> PERSIST mykey # 移除 key 的生存時間 (integer) 1 redis> TTL mykey (integer) -1
PTTL key
以毫秒爲單位返回 key 的剩餘的過時時間。
返回值
當 key 不存在時,返回 -2 。 當 key 存在但沒有設置剩餘生存時間時,返回 -1 。 不然,以毫秒爲單位,返回 key 的剩餘生存時間。
注意:在 Redis 2.8 之前,當 key 不存在,或者 key 沒有設置剩餘生存時間時,命令都返回 -1 。
# 不存在的 key redis> FLUSHDB OK redis> PTTL key (integer) -2 # key 存在,但沒有設置剩餘生存時間 redis> SET key value OK redis> PTTL key (integer) -1 # 有剩餘生存時間的 key redis> PEXPIRE key 10086 (integer) 1 redis> PTTL key (integer) 6179
TTL key
以秒爲單位,返回給定 key 的剩餘生存時間(TTL, time to live)。
# 不存在的 key redis> FLUSHDB OK redis> TTL key (integer) -2 # key 存在,但沒有設置剩餘生存時間 redis> SET key value OK redis> TTL key (integer) -1 # 有剩餘生存時間的 key redis> EXPIRE key 10086 (integer) 1 redis> TTL key (integer) 10084
RANDOMKEY
從當前數據庫中隨機返回一個 key 。
# 數據庫不爲空 redis> MSET fruit "apple" drink "beer" food "cookies" # 設置多個 key OK redis> RANDOMKEY "fruit" redis> RANDOMKEY "food" redis> KEYS * # 查看數據庫內全部key,證實 RANDOMKEY 並不刪除 key 1) "food" 2) "drink" 3) "fruit" # 數據庫爲空 redis> FLUSHDB # 刪除當前數據庫全部 key OK redis> RANDOMKEY (nil)
RENAME oldkey newkey
修改 key 的名稱
返回值
更名成功時提示 OK ,失敗時候返回一個錯誤。
當 oldkey 和 newkey 相同,或者 oldkey 不存在時,返回一個錯誤。 當 newkey 已經存在時,RENAME
命令將覆蓋舊值。
# key 存在且 newkey 不存在 redis> SET message "hello world" OK redis> RENAME message greeting OK redis> EXISTS message # message 不復存在 (integer) 0 redis> EXISTS greeting # greeting 取而代之 (integer) 1 # 當 key 不存在時,返回錯誤 redis> RENAME fake_key never_exists (error) ERR no such key # newkey 已存在時, RENAME 會覆蓋舊 newkey redis> SET pc "lenovo" OK redis> SET personal_computer "dell" OK redis> RENAME pc personal_computer OK redis> GET pc (nil) redis:1> GET personal_computer # 原來的值 dell 被覆蓋了 "lenovo"
RENAMENX oldkey newkey
僅當 newkey 不存在時,將 oldkey 更名爲 newkey 。
# newkey 不存在,更名成功 redis> SET player "MPlyaer" OK redis> EXISTS best_player (integer) 0 redis> RENAMENX player best_player (integer) 1 # newkey存在時,失敗 redis> SET animal "bear" OK redis> SET favorite_animal "butterfly" OK redis> RENAMENX animal favorite_animal (integer) 0 redis> get animal "bear" redis> get favorite_animal "butterfly"
相同:
newkey 不存在
RENAME
和RENAMENX
同樣:oldkey刪除
不一樣:
newkey 已存在時
RENAME
會覆蓋舊 newkey,RENAMENX
失敗。
TYPE key
返回 key 所儲存的值的類型。
# 字符串 redis> SET weather "sunny" OK redis> TYPE weather string # 列表 redis> LPUSH book_list "programming in scala" (integer) 1 redis> TYPE book_list list # 集合 redis> SADD pat "dog" (integer) 1 redis> TYPE pat set
runoob,Redis 鍵(key)