一、設置鍵生存/過期時間
生存時間(Time To Live,TTL):在經過指定的秒數或者毫秒數之后,服務器就會自動刪除生存時間為0的鍵
過期時間(expire time):是一個UNIX時間戳,當鍵的過期時間來臨時,服務器就會自動從數據庫中刪除這個鍵
設置生存時間
EXPIRE <key> <ttl>:用于將鍵key的生存時間設置為ttl秒
PEXPIRE <key> <ttl>:用于將鍵key的生存時間設置為ttl毫秒
設置過期時間
EXPIREAT <key> <timestamp>:用于將鍵key的過期時間設置為timestamp所指定的秒數時間戳
PEXPIREAT <key> <timestamp>:用于將鍵key的過期時間設置為timestamp所指定的毫秒數時間戳
EXPIRE、PEXPIRE、EXPIREAT這幾個命令的內部最終使用的都是PEXPIREAT
注意事項
①如果expire的鍵不存在,則命令返回0。例如:
②如果將過期時間設置為負值,那么該鍵會被立即刪除。例如:
③Redis不支持二級數據結構(例如哈希、列表)內部元素的過期功能,例如可以對列表的key做過期時間,但不能對列表類型的一個元素(value)設置過期時間。例如,下面有一個my_list列表,其含有元素“hello、world、redis”
字符串類型鍵的注意事項
對于字符串類型鍵的注意事項,執行SET命令會去掉過期時間
在Redis源碼中,SET命令的函數setKey()最后執行了removeExpire(db, key)函數去掉了過期時間。
演示案例:
二、查詢鍵的剩余生存時間
TTL命令以秒為單位返回鍵的剩余生存時間
PTTL命令則以毫秒為單位返回鍵的剩余生存時間
命令返回值:
鍵未過期:ttl返回鍵的剩余秒數,pttl返回鍵的剩余毫秒數
鍵沒有設置過期時間:返回-1
鍵不存在:返回-2
演示案例
三、移除過期時間
PERSIST命令可以移除一個鍵的過期時間
演示案例
四、附加SETEX命令
SETEX命令可以在設置一個字符串鍵的同時為鍵設置過期時間,其實set+expire的組合,是一個原子操作,并且減少了一次網絡通訊的時間
格式如下:
SETEX key seconds value
演示案例
下面設置一個鍵名為hello,其過期時間為50秒,鍵值為world