一、DEL
DEL key [key …] 刪除給定的一個或多個 key 。
不存在的 key 會被忽略。
#刪除單個鍵127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> del name
(integer) 1# 刪除一個不存在的 key, 失敗,沒有 key 被刪除127.0.0.1:6379> EXISTS phone
(integer) 0
127.0.0.1:6379> del phone
(integer) 0# 同時刪除多個 key127.0.0.1:6379> set name redis
OK
127.0.0.1:6379> set type hello
OK
127.0.0.1:6379> set age 13
OK
127.0.0.1:6379> del name type age
(integer) 3
二、DUMP
DUMP key
序列化給定 key ,并返回被序列化的值,使用 RESTORE 命令可以將這個值反序列化為 Redis 鍵。
序列化生成的值有以下幾個特點:?
(1)它帶有 64 位的校驗和,用于檢測錯誤, RESTORE 在進行反序列化之前會先檢查校驗和。 值的編碼格式和 RDB 文件保持一致。
(2)RDB 版本會被編碼在序列化值當中,如果因為 Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 會拒絕對這個值進行反序列化操作。
(3)序列化的值不包括任何生存時間信息。
# 如果 key 不存在,那么返回 nil 。否則,返回序列化之后的值。
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> dump name
"\x00\bzhangsan\x06\x00\xe1\xd1\x98\xa5mm\x1a\xdb"
127.0.0.1:6379> dump name1
(nil)
三、EXISTS
EXISTS key
檢查給定 key 是否存在。
127.0.0.1:6379> set name shangsan
OK
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists db
(integer) 0
四、EXPIRE
EXPIRE key seconds
為給定 key 設置生存時間,當 key 過期時(生存時間為 0 ),它會被自動刪除。
生存時間可以通過使用 DEL 命令來刪除整個 key 來移除,或者被 SET 和 GETSET 命令覆寫(overwrite),這意味著,如果一個命令只是修改(alter)一個帶生存時間的 key 的值而不是用一個新的 key 值來代替(replace)它的話,那么生存時間不會被改變。 比如說,對一個 key 執行 INCR 命令,對一個列表進行 LPUSH 命令,或者對一個哈希表執行 HSET 命令,這類操作都不會修改 key 本身的生存時間。
另一方面,如果使用 RENAME 對一個 key 進行改名,那么改名后的 key 的生存時間和改名前一樣。 RENAME 命令的另一種可能是,嘗試將一個帶生存時間的 key 改名成另一個帶生存時間的 another_key ,這時舊的 another_key (以及它的生存時間)會被刪除,然后舊的 key 會改名為 another_key ,因此,新的 another_key 的生存時間也和原本的 key 一樣。
使用 PERSIST 命令可以在不刪除 key 的情況下,移除 key 的生存時間,讓 key 重新成為一個『持久的』(persistent) key 。 更新生存時間 可以對一個已經帶有生存時間的 key 執行 EXPIRE 命令,新指定的生存時間會取代舊的生存時間。
127.0.0.1:6379> set cache zhangsan
OK# 設置過期時間為 30 秒
127.0.0.1:6379> expire cache 30
(integer) 1
127.0.0.1:6379> ttl cache # 查看剩余生存時間
(integer) 25
127.0.0.1:6379> expire cache 3000
(integer) 1
127.0.0.1:6379> ttl cache # 更新過期時間
(integer) 2997
五、EXPIREAT
EXPIREAT key timestamp
EXPIREAT 的作用和 EXPIRE 類似,都用于為 key 設置生存時間。 不同在于 EXPIREAT 命令接受的時間參數是 UNIX 時間戳(unix timestamp)。
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> expireat name 1700896579000 #在2023-11-25 15:16:19過期
(integer) 1
127.0.0.1:6379> ttl name
(integer) 1699195768750
六、KEYS
KEYS pattern
查找所有符合給定模式 pattern 的 key 。 KEYS 匹配數據庫中所有 key 。KEYS h?llo 匹配 hello , hallo 和 hxllo 等。KEYS hllo 匹配 hllo 和 heeeeello 等。KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符號用 \ 隔開 Warning KEYS 的速度非常快,但在一個大的數據庫中使用它仍然可能造成性能問題,如果你需要從一個數據集中查找特定的 key ,你最好還是用 Redis 的集合結構(set)來代替。
127.0.0.1:6379> mset one 1 two 2 three 3 four 4 # 一次設置 4 個 key
OK
127.0.0.1:6379> keys *o*
1) "stock"
2) "four"
3) "one"
4) "two"
127.0.0.1:6379> keys t??
1) "two"
127.0.0.1:6379> keys t[w]*
1) "two"
127.0.0.1:6379> keys * # 匹配數據庫內所有 key1) "[a2"2) "stock"3) "three"4) "name"5) "a3"6) "a2"7) "four"8) "b1"9) "one"
10) "two"
11) "cache"
12) "a1"