redis中key的過期和淘汰

一、過期(redis主動刪除)

  • 設置了ttl過期時間的key,在ttl時間到的時候redis會刪除過期的key。但是redis是惰性過期。
  • 惰性過期:redis并不會立即刪除過期的key,而是會在獲取key的時候判斷key是否過期,如果發現key過期了,才會進行刪除。
  • 定期刪除:redis為了提升性能和減少內存的使用率,會開啟1個定時任務,serverCorn默認100ms執行1次,從expires dict中以桶的維度去掃描設置了過期時間的key,掃描20個為至(默認,可配置,最多掃描400個桶),如果某個桶掃到1半已經掃到了20個key,則會把當前這個桶掃完。然后從掃描到的key中刪除掉過期的key,如果刪除比例超過10%(默認值,可配置),則會接著執行掃描和刪除邏輯,循環16次之后會有個時間監測,如果超過指定時間則跳出。

二、淘汰(不得已而為之)

  • 當redis內存不足的時候,set key沒有足夠的內存,redis以1定的策略刪除掉1些key(有效的數據),來釋放內存,從而保證新數據能set成功,這就是淘汰。
  • 淘汰策略:
    • novication: 默認淘汰策略,不刪除key,能讀,不能寫;
    • allkeys-random:從所有的key中,隨機刪除key;
    • volatile-random:隨機從設置了過期時間的key中,刪除數據;
    • allkeys-lfu:從所有key中刪除使用頻率(次數)最少的key;
    • volatile-lfu: 從設置了過期時間的key中,刪除使用次數最少的key
    • allkeys-lru: 從所有key中刪除最近最少使用的key
    • volatile-lru: 從設置了過期時間的key中,刪除最近最少使用的key
    • volatile-ttl: 從設置了過期時間的key中,刪除快要過期的key
  • 如何淘汰:
    • 不同的淘汰策略,lru、lfu、ttl會根據采樣計算淘汰值,越大越容易淘汰。并且有1個大小為16的淘汰池,會動態的替換淘汰池中的key,淘汰值越大的key在淘汰池中的位置越靠前。這樣經過采用,保證能淘汰掉最適合被淘汰的數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81589.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qwen3 - 0.6B與Bert文本分類實驗:深度見解與性能剖析

Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news數據集Zero-Shot的效果。新增Qwen3-0.6B線性層分類方法的效果。調整Bert訓練參數(epoch、eval_steps),以實現更細致的觀察,避免嚴重過擬合的情況。 TODO: 利用Qwen3-0.6…

HTML應用指南:利用POST請求獲取全國京東快遞服務網點位置信息

京東快遞作為中國領先的智能供應鏈與綜合物流服務提供商,自2007年成立以來,始終致力于通過技術創新與高效運營,為客戶提供安全、可靠、快速的物流解決方案。京東快遞依托京東集團的強大資源支持,憑借其自營倉儲、干線運輸、末端配送一體化的物流網絡,在激烈的市場競爭中脫…

js中eval的用法風險與替代方案全面解析

1. 前言 在 JavaScript 里,eval是一個既強大又充滿爭議的函數。它為開發者提供了一種動態執行字符串代碼的能力,在某些特定場景下能發揮出獨特的作用。然而,由于其特殊的運行機制,也帶來了諸多潛在的風險和問題。本文將深入探討e…

antd樹結構

一、場景實現 1、左側為查詢條件,查詢條件為樹和多選。點擊查詢條件在右上方顯示搜索條件的內容,右上方查詢條件 tag 刪除后,左側條件也對應刪除。 2、樹結構:默認第一層下所有節點都展開。 1、頁面效果圖 2、查詢效果圖 二、前端…

Jenkins 安裝與配置指南

Jenkins 安裝與配置指南(MD 示例) markdown Jenkins 安裝與配置指南 ## 一、環境準備 1. **系統要求** - 操作系統:Linux/macOS/Windows - Java 版本:JDK 8 或更高(建議 JDK 11)2. **安裝方式** - **L…

[Linux性能優化] 線程卡頓優化。Linux加入USB(HID)熱插拔線程占用CPU優化。Linux中CPU使用率過高優化

文章目錄 [Linux性能優化] 線程卡頓優化。0、省流版本一、問題定位:CPU 資源分析二、線程卡頓現場復現線程優化前圖片 三、線程卡頓優化方向1.如果是輪詢方式2.如果是事件驅動方式 四、修改方式線程優化后圖片 [Linux性能優化] 線程卡頓優化。 0、省流版本 如果采…

ip與mac-數據包傳輸過程學習

你管這破玩意叫網絡? 內容來源于飛天閃客,以前沒有學習過網絡的相關基礎知識,只會去瞎設置,現在終于是弄明白了。 多臺電腦之間想要通信,可以直接通過一條網線進行連接。但是隨著網線的增加,這個就會比較…

數值分析知識重構

數值分析知識重構 一 Question 請構造一下數值分析中的誤差概念以及每一個具體數值方法的誤差是如何估計的? 二 Question 已知 n 1 n1 n1個數據點 ( x i , y i ) , i 0 , 1 , ? , n (x_i,y_i),i0,1,\cdots,n (xi?,yi?),i0,1,?,n,請使用多種方法建立數據之間…

使用 Qt QGraphicsView/QGraphicsScene 繪制色輪

使用 Qt QGraphicsView/QGraphicsScene 繪制色輪 本文介紹如何在 Qt 中利用 QGraphicsView 和 QGraphicsScene 實現基礎圓形繪制,以及進階的色輪(Color Wheel)效果。 色輪是色彩選擇器的常見控件,廣泛應用于圖形設計、繪畫和 UI …

移除鏈表元素數據結構oj題(力扣題206)

目錄 題目描述: 題目解讀(分析) 解決代碼 題目描述: 給你一個鏈表的頭節點 head 和一個整數 val ,請你刪除鏈表中所有滿足 Node.val val 的節點,并返回 新的頭節點 。 題目解讀(分析&#…

GLPK(GNU線性規劃工具包)中建模語言MathProg的使用

GNU MathProg是一種用于描述線性數學規劃模型的建模語言。用GNU MathProg語言編寫的模型描述由一組語句和數據塊組成。 在MathProg中,模型以集合、參數、變量、約束和目標(sets, parameters, variables, constraints, objectives稱為模型對象)的形式進行描述。 在Ma…

《Python星球日記》 第77天:模型部署與總結

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 目錄 一、模型部署技術1. 模型文件導出不同模型格式對比2. 使用Flask構建RESTful API3. 使用FastAPI構建高性能API4. 部署優化與最佳實踐二、部署架構…

【JavaWeb】MySQL(準備篇)

1 MySQL安裝 1.1 解壓 下載完成后我們得到的是一個壓縮包(所有文件均在文末安裝包中),將其解壓,我們就可以得到MySQL 8.0.34 的軟件本體了(就是一個文件夾),我們可以把它放在你想安裝的位置 。 1.2 配置 1.2.1 配置…

國產數據庫工具突圍:SQLynx如何解決Navicat的三大痛點?深度體驗報告

引言:Navicat的"中國困境" 當開發者面對達夢數據庫的存儲過程調試,或是在人大金倉中處理復雜查詢時,Navicat突然變得力不從心——這不是個例。 真實痛點:某政務系統遷移至OceanBase后,開發團隊發現Navicat無…

ETL數據集成產品選型需要關注哪些方面?

ETL(Extract,Transform,Load)工具作為數據倉庫和數據分析流程中的關鍵環節,其選型對于企業的數據戰略實施有著深遠的影響。谷云科技在 ETL 領域耕耘多年,通過自身產品的實踐應用,對 ETL 產品選型…

數據結構實驗10.1:內部排序的基本運算

文章目錄 一,實驗目的二,實驗內容1. 數據生成與初始化2. 排序算法實現(1)直接插入排序(2)二分插入排序(3)希爾排序(4)冒泡排序(5)快速…

從秒開到絲滑體驗!WebAssembly助力ZKmall商城重構 B2B2C 商城性能基線

在 B2B2C 電商領域,用戶對頁面加載速度與交互流暢度的要求日益嚴苛。傳統 Web 技術在處理復雜業務邏輯、海量數據渲染時,常出現卡頓、延遲等問題,導致用戶流失。ZKmall 商城創新性地引入 WebAssembly(簡稱 Wasm)技術&a…

FD+Mysql的Insert時的字段賦值亂碼問題

方法一 FDQuery4.SQL.Text : INSERT INTO 信息表 (中心, 分組) values(:中心,:分組); FDQuery4.Params[0].DataType : ftWideString; //必須加這個數據類型的定義,否則會有亂碼 FDQuery4.Params[1].DataType : ftWideString; //ftstring就不行,必須是…

vue2.0 組件生命周期

個人簡介 👨?💻?個人主頁: 魔術師 📖學習方向: 主攻前端方向,正逐漸往全棧發展 🚴個人狀態: 研發工程師,現效力于政務服務網事業 🇨🇳人生格言&…

使用GmSSL v3.1.1實現SM2證書認證

1、首先使用gmssl命令生成根證書、客戶端公私鑰,然后使用根證書簽發客戶端證書; 2、然后編寫代碼完成認證功能,使用根證書驗證客戶端證書是否由自己簽發,然后使用客戶端證書驗證客戶端私鑰對隨機數的簽名是否正確。 第一部分生成根…