本篇博客是Redis系列的第6篇,主要講解如下內容:java
本系列的前5篇能夠點擊如下連接查看:redis
Redis系列(二):Redis的5種數據結構及其經常使用命令數據庫
Redis系列(三):Redis的持久化機制(RDB、AOF)bash
Redis系列(四):Redis的複製機制(主從複製)服務器
默認狀況下,Redis服務器有16個數據庫,分別爲db0~db15,以下圖所示:post
該數量是由配置文件中的databases
選項決定的,默認值爲16:spa
默認狀況下,咱們執行的命令的目標數據庫是db0,好比咱們執行以下命令:設計
set message "Hello,Redis"
複製代碼
這個鍵值對會保存在數據庫db0裏,以下圖所示:
若是想要切換目標數據庫,能夠使用SELECT
命令,好比切換到db1,能夠執行以下命令:
SELECT 1
複製代碼
而後執行以下圖所示的命令:
此時該鍵值對會保存在db1裏,以下圖所示:
在實際使用時,建議遵循如下規範:
Redis提供了7個和key的過時時間相關的命令,分別以下所示:
接下來詳細講解每一個命令的使用方法。
TTL
是Time To Live的縮寫,用來查看某個key的剩餘生存時間,單位爲秒。
若是key沒有設置過時時間,返回-1。
若是key不存在,返回-2。
PTTL
和TTL
相似,也是用來查看某個key的剩餘生存時間,但單位爲毫秒。
若是key沒有設置過時時間,返回-1。
若是key不存在,返回-2。
EXPIRE
命令用來給指定的key設置過時時間,單位爲秒。
若是過時時間設置成功,返回1。
若是key不存在,返回0。
PEXPIRE
與EXPIRE
相似,也是用來給指定的key設置過時時間,但單位爲毫秒。
若是過時時間設置成功,返回1。
若是key不存在,返回0。
EXPIREAT
命令用來給指定的key設置過時時間,但指定的是某個時間點秒數的UNIX時間戳。
若是過時時間設置成功,返回1。
若是key不存在,返回0。
能夠使用以下Java代碼獲取秒數的時間戳:
System.out.println(LocalDateTime.now().plusMinutes(2).toEpochSecond(ZoneOffset.ofHours(8)));
複製代碼
PEXPIREAT
與EXPIREAT
相似,用來給指定的key設置過時時間,但指定的是點毫秒數的UNIX時間戳。
若是過時時間設置成功,返回1。
若是key不存在,返回0。
能夠使用以下Java代碼獲取毫秒數的時間戳:
System.out.println(System.currentTimeMillis());
System.out.println(LocalDateTime.now().plusMinutes(2).toInstant(ZoneOffset.ofHours(8)).toEpochMilli());
複製代碼
PERSIST
命令用來移除指定key的過時時間。
若是過時時間移除成功,返回1。
若是key不存在或者key沒有設置過時時間,返回0。
黃健宏 《Redis設計與實現》