掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
開端只是一個引文,不過有時候也值得大家去思考一番,下面進入正題。

為恩施土家等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及恩施土家網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站制作、成都網(wǎng)站制作、恩施土家網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
下面分幾個部分講啦,先來回顧一下Redis鍵的生存時間,過期時間的設置;然后會講到過期鍵刪除策略;然后會聊其他功能對過期鍵的處理。
鍵過期時間設置通過Expire命令或者Pexpire命令,客戶端可以以毫秒級的精度為數(shù)據(jù)庫中的某個鍵設置生存時間,一段時間后Redis服務器會刪除生存時間為0的鍵。下面我們看一下Redis鍵的過期時間設置,以及查詢鍵剩余壽命。
EXPIRE key 5 #設置一個鍵的過期時間 單位秒
EXPIREAT KEY 1660753861 #設置過期時間某個時間戳過期(UNIX時間戳)單位秒
PEXPIRE key 33 #設置一個鍵的過期時間 單位毫秒
PEXPIREAT key 1660839534000 #設置過期時間某個時間戳過期(UNIX時間戳)單位毫秒
TTL key # 返回鍵的剩余過期時長,單位秒
PTTL key # 返回鍵的剩余過期時長,單位毫秒
Redis中的這些鍵的過期時間如何保存
Redis中維護了一個過期字典。其數(shù)據(jù)結(jié)構(gòu)中,字典的鍵是一個指針,指向某個數(shù)據(jù)庫鍵,而字典的鍵值則是一個long類型的整數(shù),表示一個毫秒精度的UNIX時間戳。
其實上面幾種設置鍵過期時間的命令相當于最后都是調(diào)用 PEXPIREAT 這個命令。
Redis中判斷鍵是否過期會使用以下的方法
常見刪除策略有三種:定時刪除、惰性刪除、定期刪除
3.2.1定時刪除
定時刪除是在設置鍵的過期時間時,設置一個定時器,定時器會在鍵的過期時間到來時立即刪除鍵
3.2.2惰性刪除
惰性刪除只會在程序需要使用鍵時,才會對當前鍵進行過期檢查,而不會去刪除其他的過期鍵。
惰性刪除執(zhí)行步驟如下:
3.2.3定期刪除
定期刪除是每隔一段時間執(zhí)行一次過期鍵刪除操作,可以通過限制刪除的操作執(zhí)行的時長和頻率來減少CPU資源占用。同時定期刪除策略不會導致過期鍵過多的堆積,造成大量內(nèi)存泄漏。
定期刪除策略有兩個點比較重要,執(zhí)行時長和執(zhí)行頻率。需要兩者結(jié)合才能達到最優(yōu)的效果。
定期刪除步驟:
定期任務執(zhí)行頻率:
為了定期檢測資源和服務狀態(tài)并根據(jù)預定策略執(zhí)行相應的操作,Redis會調(diào)用內(nèi)部函數(shù)來執(zhí)行多種后臺任務。
其執(zhí)行頻率由hz參數(shù)指定,默認為10,即每秒執(zhí)行10次。
這個值可以設置1-500,但是官方建議設置100以下,設置過大會造成CPU資源占用過大。基本上只用默認值就能滿足大部分需求。
Redis數(shù)據(jù)保存有AOF和RDB兩種功能。對于過期鍵的處理也不相同。
RDB持久化對過期鍵的處理:
主服務器模式。載入RDB文件時,會對key的過期時間進行檢查,過期鍵會被忽略,不會加載到Redis中
從服務器模式。所有數(shù)據(jù)key都會加載到Redis中
AOF持久化對過期鍵的處理:
當Redis服務器處于復制模式時對過期鍵的處理:
Redis的過期策略采用惰性刪除和定期刪除兩種組合方式,其中惰性刪除保證過期鍵一點過不會被使用,定期刪除可以保證過期數(shù)據(jù)得到釋放,優(yōu)化資源占用率。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流