本篇博客是Redis系列的第6篇,主要講解以下內容:
- 資料庫數量
- 切換目標資料庫
- 設定鍵的過期時間
- 移除鍵的過期時間
本系列的前5篇可以點擊以下鏈接查看:
Redis系列(一):Redis簡介及環境安裝
Redis系列(二):Redis的5種資料結構及其常用命令
Redis系列(三):Redis的持久化機制(RDB、AOF)
Redis系列(四):Redis的復制機制(主從復制)
Redis系列(五):Redis的過期鍵洗掉策略
1. 資料庫數量
默認情況下,Redis服務器有16個資料庫,分別為db0~db15,如下圖所示:

該數量是由組態檔中的databases選項決定的,默認值為16:

2. 切換目標資料庫
默認情況下,我們執行的命令的目標資料庫是db0,比如我們執行如下命令:
set message "Hello,Redis"
這個鍵值對會保存在資料庫db0里,如下圖所示:

如果想要切換目標資料庫,可以使用SELECT命令,比如切換到db1,可以執行如下命令:
SELECT 1
然后執行如下圖所示的命令:

此時該鍵值對會保存在db1里,如下圖所示:

在實際使用時,建議遵循以下規范:
- 各個應用使用不同的目標資料庫
- 1個應用盡量不要操作多個目標資料庫
3. 設定/移除鍵的過期時間
Redis提供了7個和key的過期時間相關的命令,分別如下所示:
- TTL
- PTTL
- EXPIRE
- PEXPIRE
- EXPIREAT
- PEXPIREAT
- PERSIST
接下來詳細講解每個命令的使用方法,
3.1 TTL
TTL是Time To Live的縮寫,用來查看某個key的剩余生存時間,單位為秒,
如果key沒有設定過期時間,回傳-1,
如果key不存在,回傳-2,


3.2 PTTL
PTTL和TTL類似,也是用來查看某個key的剩余生存時間,但單位為毫秒,
如果key沒有設定過期時間,回傳-1,
如果key不存在,回傳-2,

3.3 EXPIRE
EXPIRE命令用來給指定的key設定過期時間,單位為秒,
如果過期時間設定成功,回傳1,
如果key不存在,回傳0,

3.4 PEXPIRE
PEXPIRE與EXPIRE類似,也是用來給指定的key設定過期時間,但單位為毫秒,
如果過期時間設定成功,回傳1,
如果key不存在,回傳0,

3.5 EXPIREAT
EXPIREAT命令用來給指定的key設定過期時間,但指定的是某個時間點秒數的UNIX時間戳,
如果過期時間設定成功,回傳1,
如果key不存在,回傳0,
可以使用如下Java代碼獲取秒數的時間戳:
System.out.println(LocalDateTime.now().plusMinutes(2).toEpochSecond(ZoneOffset.ofHours(8)));

3.6 PEXPIREAT
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());

3.7 PERSIST
PERSIST命令用來移除指定key的過期時間,
如果過期時間移除成功,回傳1,
如果key不存在或者key沒有設定過期時間,回傳0,

4. 原始碼及參考
黃健宏 《Redis設計與實作》
https://redis.io/commands
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/4599.html
標籤:NoSQL
上一篇:Mongodb 之 oplog
