那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Redis鍵的生存時(shí)間、生存策略和毀滅策略

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-08 14:55 ? 次閱讀

先來(lái)回顧一下Redis鍵的生存時(shí)間,過(guò)期時(shí)間的設(shè)置;然后會(huì)講到過(guò)期鍵刪除策略;然后會(huì)聊其他功能對(duì)過(guò)期鍵的處理。

2.鍵的生存時(shí)間

鍵過(guò)期時(shí)間設(shè)置通過(guò)Expire命令或者Pexpire命令,客戶端可以以毫秒級(jí)的精度為數(shù)據(jù)庫(kù)中的某個(gè)鍵設(shè)置生存時(shí)間,一段時(shí)間后Redis服務(wù)器會(huì)刪除生存時(shí)間為0的鍵。下面我們看一下Redis鍵的過(guò)期時(shí)間設(shè)置,以及查詢鍵剩余壽命。

EXPIRE key 5 #設(shè)置一個(gè)鍵的過(guò)期時(shí)間 單位秒
EXPIREAT KEY 1660753861  #設(shè)置過(guò)期時(shí)間某個(gè)時(shí)間戳過(guò)期(UNIX時(shí)間戳)單位秒

PEXPIRE key 33 #設(shè)置一個(gè)鍵的過(guò)期時(shí)間 單位毫秒
PEXPIREAT key 1660839534000 #設(shè)置過(guò)期時(shí)間某個(gè)時(shí)間戳過(guò)期(UNIX時(shí)間戳)單位毫秒

TTL key  # 返回鍵的剩余過(guò)期時(shí)長(zhǎng),單位秒
PTTL key # 返回鍵的剩余過(guò)期時(shí)長(zhǎng),單位毫秒

Redis中的這些鍵的過(guò)期時(shí)間如何保存

Redis中維護(hù)了一個(gè)過(guò)期字典。其數(shù)據(jù)結(jié)構(gòu)中,字典的鍵是一個(gè)指針,指向某個(gè)數(shù)據(jù)庫(kù)鍵,而字典的鍵值則是一個(gè)long類型的整數(shù),表示一個(gè)毫秒精度的UNIX時(shí)間戳。

其實(shí)上面幾種設(shè)置鍵過(guò)期時(shí)間的命令相當(dāng)于最后都是調(diào)用 PEXPIREAT 這個(gè)命令。

3.鍵的過(guò)期刪除策略

3.1 如何判定鍵過(guò)期

Redis中判斷鍵是否過(guò)期會(huì)使用以下的方法

  • 檢查給定的鍵是否存在于過(guò)期字典,如果存在則獲取鍵的過(guò)期時(shí)間
  • 檢查當(dāng)前的UNIX時(shí)間戳是否大于鍵的過(guò)期時(shí)間戳,大于過(guò)期時(shí)間戳的話則判定鍵過(guò)期

3.2 三種過(guò)期鍵刪除策略

常見刪除策略有三種:定時(shí)刪除、惰性刪除、定期刪除

3.2.1定時(shí)刪除

定時(shí)刪除是在設(shè)置鍵的過(guò)期時(shí)間時(shí),設(shè)置一個(gè)定時(shí)器,定時(shí)器會(huì)在鍵的過(guò)期時(shí)間到來(lái)時(shí)立即刪除鍵

  • 優(yōu)點(diǎn):內(nèi)存友好,可以保證過(guò)期鍵盡可能快速地被刪除,釋放內(nèi)存。
  • 缺點(diǎn):CPU資源分配不友好,如果過(guò)期鍵比較多的時(shí)候,此時(shí)刪除會(huì)占用大量的CPU資源,從而間接影響Redis的性能。
3.2.2惰性刪除

惰性刪除只會(huì)在程序需要使用鍵時(shí),才會(huì)對(duì)當(dāng)前鍵進(jìn)行過(guò)期檢查,而不會(huì)去刪除其他的過(guò)期鍵。

  • 優(yōu)點(diǎn):CPU資源耗費(fèi)小,因?yàn)橹皇窃谌〕鲦I的時(shí)候才會(huì)做過(guò)期檢查,并刪除等操作。
  • 缺點(diǎn):過(guò)期鍵會(huì)占用內(nèi)存,如果一個(gè)過(guò)期鍵永遠(yuǎn)不被使用,那么就永遠(yuǎn)不能被刪除,會(huì)造成內(nèi)存泄漏。

惰性刪除執(zhí)行步驟如下:

  1. 執(zhí)行讀寫命令時(shí)去檢查鍵的過(guò)期時(shí)間
  2. 如果鍵過(guò)期,刪除鍵,整個(gè)流程會(huì)按照鍵不存在的情況處理
  3. 如果鍵未過(guò)期,則按照鍵存在的情況執(zhí)行命令
3.2.3定期刪除

定期刪除是每隔一段時(shí)間執(zhí)行一次過(guò)期鍵刪除操作,可以通過(guò)限制刪除的操作執(zhí)行的時(shí)長(zhǎng)和頻率來(lái)減少CPU資源占用。同時(shí)定期刪除策略不會(huì)導(dǎo)致過(guò)期鍵過(guò)多的堆積,造成大量?jī)?nèi)存泄漏。

定期刪除策略有兩個(gè)點(diǎn)比較重要,執(zhí)行時(shí)長(zhǎng)和執(zhí)行頻率。需要兩者結(jié)合才能達(dá)到最優(yōu)的效果。

定期刪除步驟:

  1. 從設(shè)置過(guò)期時(shí)間的key的集合中隨機(jī)檢查20個(gè)key
  2. 刪除其中的過(guò)期鍵。如果檢查結(jié)果中25%以上的key過(guò)期,則開始新一輪任務(wù)。
  3. 每次會(huì)按順序在每個(gè)數(shù)據(jù)庫(kù)執(zhí)行,如果在3號(hào)數(shù)據(jù)庫(kù)返回,則會(huì)記錄下來(lái),下次刪除操作執(zhí)行的時(shí)候會(huì)從4號(hào)數(shù)據(jù)庫(kù)開始,就這樣循環(huán)遍歷整個(gè)Redis數(shù)據(jù)庫(kù)。

定期任務(wù)執(zhí)行頻率:

為了定期檢測(cè)資源和服務(wù)狀態(tài)并根據(jù)預(yù)定策略執(zhí)行相應(yīng)的操作,Redis會(huì)調(diào)用內(nèi)部函數(shù)來(lái)執(zhí)行多種后臺(tái)任務(wù)。

其執(zhí)行頻率由hz參數(shù)指定,默認(rèn)為10,即每秒執(zhí)行10次。

圖片

image-20220821131302978

這個(gè)值可以設(shè)置1-500,但是官方建議設(shè)置100以下,設(shè)置過(guò)大會(huì)造成CPU資源占用過(guò)大。基本上只用默認(rèn)值就能滿足大部分需求。

4.其他功能對(duì)過(guò)期鍵的處理

Redis數(shù)據(jù)保存有AOF和RDB兩種功能。對(duì)于過(guò)期鍵的處理也不相同。

RDB持久化對(duì)過(guò)期鍵的處理:

  • 生成RDB文件時(shí)。 過(guò)期key會(huì)被忽略,從而不會(huì)被保存到RDB文件中
  • 加載RDB文件。
    • 主服務(wù)器模式。載入RDB文件時(shí),會(huì)對(duì)key的過(guò)期時(shí)間進(jìn)行檢查,過(guò)期鍵會(huì)被忽略,不會(huì)加載到Redis中
    • 從服務(wù)器模式。所有數(shù)據(jù)key都會(huì)加載到Redis中

AOF持久化對(duì)過(guò)期鍵的處理:

  • AOF文件寫入的時(shí)候,會(huì)append刪除語(yǔ)句, DEL key 。
  • AOF重寫的時(shí)候過(guò)期key則不會(huì)被寫入AOF文件中。

當(dāng)Redis服務(wù)器處于復(fù)制模式時(shí)對(duì)過(guò)期鍵的處理:

  • 主服務(wù)器刪除key時(shí),會(huì)向從服務(wù)器發(fā)送DEL命令
  • 從服務(wù)器不會(huì)處理過(guò)期key
  • 從服務(wù)器只有接到Master發(fā)送的DEL命令才會(huì)刪除key

總結(jié)

Redis的過(guò)期策略采用惰性刪除和定期刪除兩種組合方式,其中惰性刪除保證過(guò)期鍵一點(diǎn)過(guò)不會(huì)被使用,定期刪除可以保證過(guò)期數(shù)據(jù)得到釋放,優(yōu)化資源占用率。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9303

    瀏覽量

    86061
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3255

    瀏覽量

    115371
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3846

    瀏覽量

    64685
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    378

    瀏覽量

    10942
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何排查Redis性能問(wèn)題 Redis內(nèi)部實(shí)現(xiàn)原理解析

    作為業(yè)務(wù)開發(fā)人員,我們需要了解 Redis 的基本原理,例如各個(gè)命令執(zhí)行的時(shí)間復(fù)雜度、數(shù)據(jù)過(guò)期策略、數(shù)據(jù)淘汰策略等,從而更合理地使用 Redis
    發(fā)表于 07-05 12:33 ?352次閱讀
    如何排查<b class='flag-5'>Redis</b>性能問(wèn)題 <b class='flag-5'>Redis</b>內(nèi)部實(shí)現(xiàn)原理解析

    網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)可生存性量化評(píng)估

    【作者】:張益;霍珊珊;【來(lái)源】:《清華大學(xué)學(xué)報(bào)(自然科學(xué)版)》2009年S2期【摘要】:針對(duì)當(dāng)前網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)可生存性評(píng)估缺乏系統(tǒng)的評(píng)估指標(biāo)和量化評(píng)估方法的現(xiàn)狀,提出了量化評(píng)估指標(biāo)體系和基于多指標(biāo)
    發(fā)表于 04-24 09:43

    新人沒有積分,不好生存

    新人沒有積分,不好生存
    發(fā)表于 12-17 13:59

    JESD204B生存指南

    JESD204B生存指南
    發(fā)表于 05-28 12:08

    無(wú)線傳感器網(wǎng)絡(luò)節(jié)能策略

    分布范圍廣的傳感器節(jié)點(diǎn)不能補(bǔ)充能量,存在嚴(yán)重的能量約束。高效使用節(jié)點(diǎn)的能量,延長(zhǎng)網(wǎng)絡(luò)系統(tǒng)的生存期成為傳感器網(wǎng)絡(luò)的首要設(shè)計(jì)目標(biāo)。本文對(duì)無(wú)線傳感器網(wǎng)絡(luò)的主要節(jié)能策略進(jìn)行分析說(shuō)明。
    發(fā)表于 06-27 07:02

    Redis的內(nèi)存淘汰機(jī)制

    redis淘汰策略
    發(fā)表于 09-27 07:55

    淺析Redis的過(guò)期機(jī)制

    Redis數(shù)據(jù)過(guò)期策略詳解
    發(fā)表于 10-12 15:12

    淺析cache控制器的分配策略與替換策略

    在cache的相關(guān)操作中,cache控制器需要根據(jù)需求做出許多不同的選擇。例如:分配策略是否需要將數(shù)據(jù)從主存中分配到cache中;替換策略組相聯(lián)cache中,所有的way都已經(jīng)有填充數(shù)據(jù)了,miss
    發(fā)表于 06-15 16:24

    WDM光網(wǎng)絡(luò)生存策略及仿真

    討論了不同的網(wǎng)絡(luò)生存策略各自的優(yōu)缺點(diǎn),針對(duì)專用通路保護(hù)和共享通路保護(hù)兩種策略進(jìn)行了仿真試驗(yàn),對(duì)其性能進(jìn)行分析比較,得出結(jié)論:專用通路保護(hù)比共享通路保護(hù)能更
    發(fā)表于 04-19 19:19 ?20次下載

    WDM網(wǎng)狀網(wǎng)的生存性問(wèn)題研究

    研究出一種最優(yōu)的 WDM 光網(wǎng)絡(luò)生存策略是未來(lái)全光網(wǎng)絡(luò)組網(wǎng)的重要方面之一。定性地介紹了幾種WDM網(wǎng)狀網(wǎng)的保護(hù)恢復(fù)方案。采用預(yù)規(guī)劃方法詳細(xì)分析了專用和共享通道保護(hù)方法以及
    發(fā)表于 07-19 17:00 ?27次下載

    帶無(wú)線能量補(bǔ)充設(shè)備的WSN基站部署策略

    為延長(zhǎng)無(wú)線傳感器網(wǎng)絡(luò)(WSN)生存周期,引入無(wú)線能量補(bǔ)充設(shè)備,設(shè)計(jì)一種wSN基站部署策略。通過(guò)聚類傳感器節(jié)點(diǎn)并計(jì)算每個(gè)區(qū)域傳感器節(jié)點(diǎn)的通信量確定基站位置坐標(biāo),構(gòu)建以最大化能量補(bǔ)充設(shè)備駐站時(shí)間比為目標(biāo)
    發(fā)表于 06-04 15:47 ?9次下載

    Redis 的數(shù)據(jù)清理策略

    本文整理 Redis 的數(shù)據(jù)清理策略所有代碼來(lái)自 Redis version :5.0, 不同版本的 Redis 策略可能有調(diào)整
    發(fā)表于 09-19 14:24 ?412次閱讀
    <b class='flag-5'>Redis</b> 的數(shù)據(jù)清理<b class='flag-5'>策略</b>

    Redis的刪除策略和內(nèi)存淘汰機(jī)制介紹

    Redis過(guò)期的刪除策略Redis的過(guò)期刪除策略就是:惰性刪除和定期刪除兩種策略配合使用。
    的頭像 發(fā)表于 10-09 11:06 ?521次閱讀

    Redis 如何刪除數(shù)據(jù)

    Redis 中所有的都可以設(shè)置過(guò)期策略,就像是所有的都可以上"生死簿",上了生死簿的時(shí)間
    的頭像 發(fā)表于 10-09 16:01 ?558次閱讀

    redis的淘汰策略

    Redis是一種基于內(nèi)存的鍵值存儲(chǔ)系統(tǒng),為了充分利用內(nèi)存,Redis采用了一些淘汰策略來(lái)管理內(nèi)存空間。淘汰策略的作用是當(dāng)內(nèi)存空間不足時(shí),選擇合適的數(shù)據(jù)對(duì)象進(jìn)行淘汰,釋放出更多的內(nèi)存空間
    的頭像 發(fā)表于 12-04 16:23 ?594次閱讀
    保时捷娱乐| 波克城市棋牌下载| 百家乐官网技巧平注常赢法| 馆陶县| 澳门百家乐群策略| 线上百家乐官网玩法| 皇冠现金投注网| 温州百家乐官网的玩法技巧和规则| 岑溪市| 机械手百家乐的玩法技巧和规则 | 澳门百家乐哪家信誉最好| 新澳博百家乐官网娱乐城| 鸿利国际娱乐城| 大发888娱乐城可靠吗| 博彩百家乐软件| 天天百家乐官网的玩法技巧和规则| 永利百家乐官网开户| 大发888 没人举报吗| 百家乐走势图解| 百家乐官网群shozo权威| 澳门百家乐官网玩法与游戏规则 | 澳门百家乐介绍| 利博百家乐官网的玩法技巧和规则| 永利高百家乐官网会员| 全讯网a3322| 新世纪百家乐娱乐城| 做生意进门风水| 百家乐官网suncity| 百家乐官网趋势图怎么看| 和记娱乐| 百家乐光纤冼牌机| 百家乐娱乐城玩法| 金百家乐官网的玩法技巧和规则 | A8百家乐的玩法技巧和规则| 玩百家乐官网游戏的最高技巧| 永利百家乐官网开户| 永利博线上娱乐| 威尼斯人娱乐平台注册网址| 百家乐最大的赌局| 百家乐算牌e世博| 百家百家乐官网视频游戏世界|