Redis鍵(Key)
Redis 鍵(key)
Redis 鍵命令用於管理 redis 的鍵。
語法
Redis 鍵命令的基本語法如下:
redis 127.0.0.1:6379> COMMAND KEY_NAME
實例
127.0.0.1:6379> SET NoSQL0 redis
OK
127.0.0.1:6379> DEL NoSQL0
(integer) 1
127.0.0.1:6379>
在以上實例中 DEL 是一個命令, runoobkey 是一個鍵。 如果鍵被刪除成功,命令執行後輸出 (integer) 1,否則將輸出 (integer) 0
Redis keys 命令
命令執行成功則返回 (integer) 1
DEL
Redis DEL 命令用於刪除已存在的鍵。不存在的 key 會被忽略。
127.0.0.1:6379> SET NoSQL0 redis
OK
127.0.0.1:6379> DEL NoSQL0
(integer) 1
127.0.0.1:6379>
DUMP
Redis DUMP 命令用於序列化給定 key ,並返回被序列化的值。如果 key 不存在,那麽返回 nil 。 否則,返回序列化之後的值。
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
Redis EXISTS 命令用於檢查給定 key 是否存在。若 key 存在返回 1 ,否則返回 0 。
127.0.0.1:6379> EXISTS greeting
(integer) 1
127.0.0.1:6379> EXISTS no-existing
(integer) 0
127.0.0.1:6379>
Keys
Redis Keys 命令用於查找所有符合給定模式 pattern 的 key .符合給定模式的 key 列表 (Array)。
127.0.0.1:6379> SET nosql0 redis OK 127.0.0.1:6379> SET nosql2 mongodb OK 127.0.0.1:6379> SET nosql3 Counchdb OK 127.0.0.1:6379> KEYS nosql* 1) "nosql0" 2) "nosql2" 3) "nosql3" 127.0.0.1:6379>
Expire
Redis Expire 命令用於設置 key 的過期時間。key 過期後將不再可用。設置成功返回 1 。 當 key 不存在或者不能為 key 設置過期時間時(比如在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過期時間)返回 0 。
127.0.0.1:6379> SET ttl-key redis
OK
127.0.0.1:6379> EXPIRE ttl-key 60
(integer) 1
127.0.0.1:6379>
設置了過期時間為 1 分鐘,1分鐘後該鍵會自動刪除。
Expireat
Redis Expireat 命令用於以 UNIX 時間戳(unix timestamp)格式設置 key 的過期時間。key 過期後將不再可用。設置成功返回 1 。 當 key 不存在或者不能為 key 設置過期時間時(比如在低於 2.1.3 版本的 Redis 中你嘗試更新 key 的過期時間)返回 0 。
127.0.0.1:6379> SET ttl-key redis
OK
127.0.0.1:6379> EXPIREAT ttl-key 1518689999
(integer) 1
127.0.0.1:6379>
EXPIREAT 的作用和 EXPIRE 類似,都用於為 key 設置過期時間。 不同在於 EXPIREAT 命令接受的時間參數是 UNIX 時間戳(unix timestamp)。類似的還有:
- PEXPIRE key milliseconds
設置 key 的過期時間以毫秒計。 - PEXPIREAT key milliseconds-timestamp
設置 key 過期時間的時間戳(unix timestamp) 以毫秒計
TTL & PERSIST
Redis TTL 命令以秒為單位返回 key 的剩余過期時間。當 key 不存在時,返回 -2 。 當 key 存在但沒有設置剩余生存時間時,返回 -1 。 否則,以秒為單位,返回 key 的剩余生存時間。類似的還有PTTL key以毫秒為單位返回 key 的剩余的過期時間。
Redis PERSIST 命令用於移除給定 key 的過期時間,使得 key 永不過期。當過期時間移除成功時,返回 1 。 如果 key 不存在或 key 沒有設置過期時間,返回 0 。
127.0.0.1:6379> SET mykey "Hello"
OK
127.0.0.1:6379> EXPIRE mykey 10
(integer) 1
127.0.0.1:6379> TTL mykey
(integer) 2
127.0.0.1:6379> PERSIST mykey
(integer) 0
127.0.0.1:6379> TTL mykey
(integer) -2
RANDOMKEY
Redis RANDOMKEY 命令從當前數據庫中隨機返回一個 key 。當數據庫不為空時,返回一個 key 。 當數據庫為空時,返回 nil 。
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> RANDOMKEY
(nil)
127.0.0.1:6379> MSET fruit "apple" drink "beer" food "cookies"
OK
127.0.0.1:6379> RANDOMKEY
"drink"
127.0.0.1:6379> RANDOMKEY
"fruit"
127.0.0.1:6379> RANDOMKEY
"fruit"
其中 FLUSHDB 刪除當前數據庫所有 key
Rename & Renamenx
Redis Rename 命令用於修改 key 的名稱 。改名成功時提示 OK ,失敗時候返回一個錯誤。當 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在時,返回一個錯誤。 當 NEW_KEY_NAME 已經存在時, 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"
Redis Renamenx 命令用於在新的 key 不存在時修改 key 的名稱 。修改成功時,返回 1 。 如果NEW_KEY_NAME 已經存在,返回 0 。
# 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"
Type
Redis Type 命令用於返回 key 所儲存的值的類型。返回 key 的數據類型,數據類型有:
- none (key不存在)
- string (字符串)
- list (列表)
- set (集合)
- zset (有序集)
- hash (哈希表)
# 字符串
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
Move
Redis MOVE 命令用於將當前數據庫的 key 移動到給定的數據庫 db 當中。移動成功返回 1,失敗則返回 0 。
# 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
# 證實 song 被移到了數據庫 1 (註意命令提示符變成了"redis:1",表明正在使用數據庫
redis:1> EXISTS song
(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"
Redis鍵(Key)