在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Redis鍵的生存時間、生存策略和毀滅策略

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-08 14:55 ? 次閱讀

先來回顧一下Redis鍵的生存時間,過期時間的設置;然后會講到過期鍵刪除策略;然后會聊其他功能對過期鍵的處理。

2.鍵的生存時間

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

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

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

TTL key  # 返回鍵的剩余過期時長,單位秒
PTTL key # 返回鍵的剩余過期時長,單位毫秒

Redis中的這些鍵的過期時間如何保存

Redis中維護了一個過期字典。其數據結構中,字典的鍵是一個指針,指向某個數據庫鍵,而字典的鍵值則是一個long類型的整數,表示一個毫秒精度的UNIX時間戳。

其實上面幾種設置鍵過期時間的命令相當于最后都是調用 PEXPIREAT 這個命令。

3.鍵的過期刪除策略

3.1 如何判定鍵過期

Redis中判斷鍵是否過期會使用以下的方法

  • 檢查給定的鍵是否存在于過期字典,如果存在則獲取鍵的過期時間
  • 檢查當前的UNIX時間戳是否大于鍵的過期時間戳,大于過期時間戳的話則判定鍵過期

3.2 三種過期鍵刪除策略

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

3.2.1定時刪除

定時刪除是在設置鍵的過期時間時,設置一個定時器,定時器會在鍵的過期時間到來時立即刪除鍵

  • 優點:內存友好,可以保證過期鍵盡可能快速地被刪除,釋放內存。
  • 缺點:CPU資源分配不友好,如果過期鍵比較多的時候,此時刪除會占用大量的CPU資源,從而間接影響Redis的性能。
3.2.2惰性刪除

惰性刪除只會在程序需要使用鍵時,才會對當前鍵進行過期檢查,而不會去刪除其他的過期鍵。

  • 優點:CPU資源耗費小,因為只是在取出鍵的時候才會做過期檢查,并刪除等操作。
  • 缺點:過期鍵會占用內存,如果一個過期鍵永遠不被使用,那么就永遠不能被刪除,會造成內存泄漏。

惰性刪除執行步驟如下:

  1. 執行讀寫命令時去檢查鍵的過期時間
  2. 如果鍵過期,刪除鍵,整個流程會按照鍵不存在的情況處理
  3. 如果鍵未過期,則按照鍵存在的情況執行命令
3.2.3定期刪除

定期刪除是每隔一段時間執行一次過期鍵刪除操作,可以通過限制刪除的操作執行的時長和頻率來減少CPU資源占用。同時定期刪除策略不會導致過期鍵過多的堆積,造成大量內存泄漏。

定期刪除策略有兩個點比較重要,執行時長和執行頻率。需要兩者結合才能達到最優的效果。

定期刪除步驟:

  1. 從設置過期時間的key的集合中隨機檢查20個key
  2. 刪除其中的過期鍵。如果檢查結果中25%以上的key過期,則開始新一輪任務。
  3. 每次會按順序在每個數據庫執行,如果在3號數據庫返回,則會記錄下來,下次刪除操作執行的時候會從4號數據庫開始,就這樣循環遍歷整個Redis數據庫。

定期任務執行頻率:

為了定期檢測資源和服務狀態并根據預定策略執行相應的操作,Redis會調用內部函數來執行多種后臺任務。

其執行頻率由hz參數指定,默認為10,即每秒執行10次。

圖片

image-20220821131302978

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

4.其他功能對過期鍵的處理

Redis數據保存有AOF和RDB兩種功能。對于過期鍵的處理也不相同。

RDB持久化對過期鍵的處理:

  • 生成RDB文件時。 過期key會被忽略,從而不會被保存到RDB文件中
  • 加載RDB文件。
    • 主服務器模式。載入RDB文件時,會對key的過期時間進行檢查,過期鍵會被忽略,不會加載到Redis中
    • 從服務器模式。所有數據key都會加載到Redis中

AOF持久化對過期鍵的處理:

  • AOF文件寫入的時候,會append刪除語句, DEL key 。
  • AOF重寫的時候過期key則不會被寫入AOF文件中。

當Redis服務器處于復制模式時對過期鍵的處理:

  • 主服務器刪除key時,會向從服務器發送DEL命令
  • 從服務器不會處理過期key
  • 從服務器只有接到Master發送的DEL命令才會刪除key

總結

Redis的過期策略采用惰性刪除和定期刪除兩種組合方式,其中惰性刪除保證過期鍵一點過不會被使用,定期刪除可以保證過期數據得到釋放,優化資源占用率。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9335

    瀏覽量

    86135
  • 定時器
    +關注

    關注

    23

    文章

    3256

    瀏覽量

    115450
  • 數據庫
    +關注

    關注

    7

    文章

    3852

    瀏覽量

    64741
  • Redis
    +關注

    關注

    0

    文章

    379

    瀏覽量

    10967
收藏 人收藏

    評論

    相關推薦

    如何排查Redis性能問題 Redis內部實現原理解析

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

    網絡存儲系統可生存性量化評估

    【作者】:張益;霍珊珊;【來源】:《清華大學學報(自然科學版)》2009年S2期【摘要】:針對當前網絡存儲系統可生存性評估缺乏系統的評估指標和量化評估方法的現狀,提出了量化評估指標體系和基于多指標
    發表于 04-24 09:43

    新人沒有積分,不好生存

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

    JESD204B生存指南

    JESD204B生存指南
    發表于 05-28 12:08

    無線傳感器網絡節能策略

    分布范圍廣的傳感器節點不能補充能量,存在嚴重的能量約束。高效使用節點的能量,延長網絡系統的生存期成為傳感器網絡的首要設計目標。本文對無線傳感器網絡的主要節能策略進行分析說明。
    發表于 06-27 07:02

    Redis的內存淘汰機制

    redis淘汰策略
    發表于 09-27 07:55

    淺析Redis的過期機制

    Redis數據過期策略詳解
    發表于 10-12 15:12

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

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

    WDM光網絡生存策略及仿真

    討論了不同的網絡生存策略各自的優缺點,針對專用通路保護和共享通路保護兩種策略進行了仿真試驗,對其性能進行分析比較,得出結論:專用通路保護比共享通路保護能更
    發表于 04-19 19:19 ?20次下載

    WDM網狀網的生存性問題研究

    研究出一種最優的 WDM 光網絡生存策略是未來全光網絡組網的重要方面之一。定性地介紹了幾種WDM網狀網的保護恢復方案。采用預規劃方法詳細分析了專用和共享通道保護方法以及
    發表于 07-19 17:00 ?27次下載

    帶無線能量補充設備的WSN基站部署策略

    為延長無線傳感器網絡(WSN)生存周期,引入無線能量補充設備,設計一種wSN基站部署策略。通過聚類傳感器節點并計算每個區域傳感器節點的通信量確定基站位置坐標,構建以最大化能量補充設備駐站時間比為目標
    發表于 06-04 15:47 ?9次下載

    Redis 的數據清理策略

    本文整理 Redis 的數據清理策略所有代碼來自 Redis version :5.0, 不同版本的 Redis 策略可能有調整
    發表于 09-19 14:24 ?420次閱讀
    <b class='flag-5'>Redis</b> 的數據清理<b class='flag-5'>策略</b>

    Redis的刪除策略和內存淘汰機制介紹

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

    Redis 如何刪除數據

    Redis 中所有的都可以設置過期策略,就像是所有的都可以上"生死簿",上了生死簿的時間
    的頭像 發表于 10-09 16:01 ?565次閱讀

    redis的淘汰策略

    Redis是一種基于內存的鍵值存儲系統,為了充分利用內存,Redis采用了一些淘汰策略來管理內存空間。淘汰策略的作用是當內存空間不足時,選擇合適的數據對象進行淘汰,釋放出更多的內存空間
    的頭像 發表于 12-04 16:23 ?604次閱讀
    主站蜘蛛池模板: 两性午夜欧美高清做性 | 免费人成观看在线网 | 高清一区二区在线观看 | 三级毛片网站 | 天天躁夜夜躁狠狠躁2021 | 日韩免费观看视频 | 超h 高h 污肉1v1御书屋 | 4388x17亚洲最大成人网 | 欧美亚洲专区 | 亚洲婷婷综合色高清在线 | 操美女的视频网站 | 长腿丝袜美女被啪啪 | 丁香六月婷婷精品免费观看 | 午夜国产高清精品一区免费 | 天天干天天拍天天射天天添天天爱 | 久久国产伦三级理电影 | 国产一区国产二区国产三区 | 国产成人精品一区二区三区 | 久久国产免费观看精品 | 日本xxxx色视频在线观看免 | 成 人在线观看视频网站 | 511韩国理论片在线观看 | 大桥未久加勒比女热大陆在线 | 国产欧美久久久精品影院 | 久久中文字幕一区二区 | 亚洲国产午夜看片 | 国产天天色| 深爱激情小说网 | 天天操夜操 | 狠狠狠色丁香婷婷综合久久五月 | 91国在线啪精品一区 | 国产人成午夜免视频网站 | 免费高清在线视频色yeye | 狠狠五月深爱婷婷网 | 久久99热精品这里久久精品 | 免费看很黄很色裸乳视频 | 国产巨大bbbb天美 | 午夜国产高清精品一区免费 | 免费的毛片网站 | www深夜视频在线观看高清 | 欧美高清免费一级在线 |