持續總結中!2024年面試必問 20 道 Redis面試題(四)

上一篇地址:持續總結中!2024年面試必問 20 道 Redis面試題(三)-CSDN博客

七、Redis過期鍵的刪除策略?

Redis 過期鍵的刪除策略主要涉及以下幾種方式:

1.?定時刪除(Timed Expiration)

這是最直接的過期鍵刪除策略。當為一個鍵設置過期時間后,Redis 會在該鍵達到過期時間時立即將其刪除。這種方式的優點是確保了數據的實時性,過期數據能夠立即被清理出去,但缺點是可能會對性能產生影響,因為每個帶有過期時間的鍵都需要創建一個定時器來監控。

2.?惰性刪除(Lazy Expiration)

在這種策略下,鍵并不會在過期時立即被刪除,而是在下一次訪問該鍵時才會被檢查并刪除。這種方式的優點是可以節省CPU資源,因為它避免了定時器的開銷。但是,它可能會導致過期數據在內存中駐留較長時間,從而占用內存空間。

3.?定期掃描刪除(Periodic Expiration)

Redis 會定期掃描鍵空間以查找并刪除過期的鍵。這種策略通過隨機抽樣的方式來減少對性能的影響,但無法保證過期數據能夠及時被刪除。定期掃描可以配置不同的頻率和條件,以適應不同的性能和實時性需求。

4.?內存淘汰策略(Eviction Policies)

當內存不足時,Redis 會根據配置的內存淘汰策略來決定哪些鍵應該被刪除。這些策略包括但不限于:

  • noeviction:不刪除任何數據,如果內存不足,寫入操作將被拒絕。
  • allkeys-lru:從所有鍵中刪除最近最少使用的鍵。
  • allkeys-random:從所有鍵中隨機刪除鍵。
  • volatile-lru:從設置了過期時間的鍵中刪除最近最少使用的鍵。
  • volatile-random:從設置了過期時間的鍵中隨機刪除鍵。
  • volatile-ttl:刪除即將過期的鍵。

5.?內存碎片整理(Active Defragmentation)

在 Redis 4.0 及以上版本中,可以啟用內存碎片整理功能。這個功能可以在后臺異步地整理內存,減少內存碎片,從而提高內存的使用效率。雖然這個功能不直接刪除過期鍵,但它有助于提高內存的總體性能。

6.?使用 Redis 4.0 及以上版本的優化特性

Redis 4.0 引入了一些新特性,比如 LAZY FREE,可以在后臺線程中異步地釋放過期鍵占用的內存,減少對主線程的影響。

7.?過期時間分散策略

為了避免大量鍵在同一時間過期導致的性能問題,可以通過在設置的過期時間上增加一個隨機偏移量,使得過期時間分散在一段時間內,從而避免刪除操作的集中。

通過這些策略的組合使用,Redis 能夠在保證性能的同時,有效地管理過期鍵的刪除,確保緩存數據的時效性和內存使用的效率。

八、Redis的回收策略(淘汰策略)?

Redis 提供了多種數據淘汰策略,用于在內存不足時從鍵空間中選擇并移除數據。以下是 Redis 支持的主要淘汰策略:

1.?noeviction

此策略會阻止任何新寫入操作,如果內存限制達到,嘗試寫入數據時會返回錯誤。這種策略不會淘汰任何現有的鍵。

2.?allkeys-lru

這種策略會淘汰整個鍵空間中最久未被訪問的鍵(Least Recently Used)。它適用于那些訪問模式下舊數據很少被再次訪問的場景。

3.?allkeys-random

此策略會從所有鍵中隨機選擇并淘汰一個鍵。它是一種簡單且公平的淘汰方式,但可能不是最優化的。

4.?volatile-lru

這種策略會淘汰那些設置了過期時間的鍵中最久未被訪問的鍵。如果鍵空間中沒有可淘汰的過期鍵,Redis 將嘗試使用 noeviction 策略。

5.?volatile-random

此策略會從設置了過期時間的鍵中隨機淘汰一個鍵。與 volatile-lru 類似,如果沒有過期鍵,Redis 將使用 noeviction 策略。

6.?volatile-ttl

這種策略會淘汰那些設置了過期時間的鍵中,剩余生存時間(Time To Live, TTL)最短的鍵。如果沒有過期鍵,Redis 同樣會使用 noeviction 策略。

7.?allkeys-lfu

這種策略會淘汰整個鍵空間中最少使用的鍵(Least Frequently Used)。適用于那些訪問模式下某些數據很少被訪問的場景。

8.?volatile-lfu

此策略會淘汰設置了過期時間的鍵中最少使用的鍵。如果沒有過期鍵,Redis 將使用 noeviction 策略。

配置淘汰策略

淘汰策略可以在 Redis 配置文件中設置,通過 maxmemory-policy 配置項進行配置。例如:

maxmemory-policy allkeys-lru

這行配置表示當 Redis 達到內存上限時,將使用 LRU 策略淘汰數據。

考慮因素

在選擇淘汰策略時,需要考慮以下因素:

  • 數據訪問模式:不同的應用有不同的數據訪問模式,選擇一個與訪問模式相匹配的淘汰策略非常重要。
  • 數據時效性:對于那些過期后不再需要的數據,使用考慮 TTL 的淘汰策略可能更合適。
  • 內存限制:了解系統的內存限制,并根據可用內存選擇合適的淘汰策略。
  • 業務需求:不同的業務對數據的準確性和實時性有不同的需求,需要根據業務需求選擇淘汰策略。

總結

Redis 的淘汰策略提供了靈活的選擇,以適應不同的應用場景和業務需求。正確配置和使用這些策略,可以幫助確保 Redis 在內存限制下依然能夠高效穩定地運行。

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

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

相關文章

面試的內容

1.C的三大特性:封裝,繼承,多態 2.C11的特性 3.NULL與Nullptr的區別: nullptr是一個特殊的空指針常量,不能被隱式轉換為其他類型。 NULL 在一些情況下可能會發生隱式類型轉換 4.智能指針 5.stl/Qt stl stl容器包含哪些&…

如何在沒有密碼或Face ID的情況下解鎖iPhone

iPhone 是一款以其一流的安全功能而聞名的設備,包括面容 ID 和密碼。但是,你有沒有想過,如果沒有這些安全措施,你是否可以解鎖iPhone?無論您是忘記了密碼,Face ID不起作用,還是只是對其他方法感…

5.23-

回顧 I0多路復用的原理? 程序首先向操作系統發起一個IO多路復用請求,告訴操作系統需要監視哪些IO通道。這些IO通道可以包括網絡套接字、文件描述符等操作系統隨后會將這些IO通道放入一個隊列中,并在某個IO通道就緒時(如數據到達、文件可讀…

「YashanDB遷移體驗官」Mysql生產環境遷移至YashanDB數據庫深度體驗

「YashanDB遷移體驗官」Mysql生產環境遷移至YashanDB數據庫深度體驗 1. 前言1.1 產品介紹1.2 產品架構1.3 產品規格1.3.1 數據庫版本支持1.3.2 數據類型支持 2. YMP安裝2.1 環境說明2.2 執行安裝2.3 訪問YMP2.3.1 YMP登錄界面2.3.2 YMP遷移流程 3. YMP數據遷移3.1 創建數據源3.…

離線模式下載安裝gcc-4.8.5

目錄 一,下載gcc離線安裝包 二,下載gcc依賴包 三,安裝gcc 1, 解壓 2, 將依賴庫放置環境 3, 安裝 3.1自動安裝 3.1.1 執行依賴庫的編譯 3.1.2 新建編譯目錄 3.1.3 配置編譯環境 3.1.4 編譯 3.1.5 安裝 3.2 手動安裝 3.2.1 安裝GMP-4.3.2 3.2.2 安裝mpf…

【pytorch】 Win11下cuda,cudnn以及pytorch環境安裝

Win11下cuda,cudnn以及pytorch環境安裝 CUDA環境安裝1. 查看CUDA版本1.1 打開NVIDIA控制面板,可以點右下角的NVIDIA設置1.2 點擊系統信息,選擇組件查看CUDA版本 2. 下載對應的CUDA版本3. 安裝3.1 啟動exe文件安裝 4. 驗證安裝結果 CUDNN 環境…

【MySQL精通之路】InnoDB-啟動選項和系統變量

系統變量可以在服務器啟動時設置TRUE或FALSE啟用禁用,也可以通過使用--skip前綴來禁用 例如: 要啟用或禁用InnoDB自適應哈希索引,可以在命令行中使用--skip-innodb-adaptive-hash-index或--innodb-adaptive-hash-index,或者在配置…

JavaSE : 注解 Annotation

注解 Java中的注解(Annotation)是一種元數據形式,用于向編譯器或JVM提供有關程序元素(如類、方法、變量、參數和包)的附加信息。注解不會直接影響程序的行為或結構,但它們可以被編譯器、開發工具或運行時環…

Apache CXF Aegis databinding SSRF 高危漏洞修復

一、漏洞修復 Apache CXF Aegis databinding SSRF漏洞 Spring Web UriComponentsBuilder URL解析不當漏洞 二、修復步驟 1、Apache CXF Aegis databinding SSRF漏洞修復 步驟: 進入服務器搜索 databinding find -name *databinding* 發現版本是3.1.6 果斷…

數據結構~~帶環鏈表的環開始的節點位置**兩種方法

1.帶環鏈表環開始的位置 (1)上面的這個測試用例使用的是包含了4個節點的帶環鏈表,我們要找的就是鏈表里面的環開始的節點的位置,拿這個測試用例而言,就是2這個節點,從這個節點開始,我們的鏈表就…

【第16章】MyBatis-Spring之SqlSession

文章目錄 前言一、SqlSessionTemplate1. 創建2. 使用3. 批量操作3.1 創建SqlSessionTemplate3.2 service3.3 controller 二、SqlSessionDaoSupport總結 前言 在 MyBatis 中,你可以使用 SqlSessionFactory 來創建 SqlSession。 一旦你獲得一個 session 之后&#xf…

源碼部署EFK

目錄 資源列表 基礎環境 關閉防護墻 關閉內核安全機制 修改主機名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 單節點 集群(3臺節點集群為例) 啟動 二、部署filebeat 部署filebeat 添加配置文件 啟動 三、部署kiban…

單點登錄【demo】

前言 2023-07-29 15:44:56 公開發布于 2024-5-22 00:04:56 單點登錄【demo】 以下是 Java 實現單點登錄的示例代碼: 單點登錄(Single Sign-On,SSO)是一種身份認證和授權機制,可以使用戶在多個應用程序或系統之間使…

SQL常用基礎語句(一)-- FGHIJ開頭

GROUP BY GROUP BY語法可以根據給定數據列的每個成員對查詢結果進行分組統計,最終得到一個分組匯總表。在GROUP BY子句后面包含了一個HAVING子句,HAVING類似于WHERE,(唯一的差別是WHERE過濾行,HAVING過濾組&#xff0…

【C/C++筆試練習】TCP、IP廣播、ARP協議、IP路由器、MAC協議、三次握手、TCP/IP、子網劃分年、會抽獎、抄送列表

文章目錄 C/C筆試練習選擇部分(1)TCP(2)IP廣播(3)ARP協議(4)IP路由器(5)MAC協議(6)三次握手(7)TCP/IP&#xf…

PHP在線制作表白網源碼

PHP在線制作表白網源碼,送女友個驚喜吧,無數據庫,上傳就能用,后臺/admin,賬號密碼都是admin 百度網盤:https://pan.baidu.com/s/1rbD2_8IsP9UPLK-cdgEXfA?pwdre59

AWS安全性身份和合規性之Secrets Manager

AWS Secrets Manager是一項AWS托管的服務,用于安全地存儲、管理和輪轉敏感信息,如數據庫密碼、API密鑰、OAuth令牌等。AWS Secrets Manager助您在整個生命周期內輕松管理、檢索和輪換數據庫憑證、API密鑰和其他密鑰。 關鍵詞:集中管理、加密…

sql使用加和進行合并去重并提升速率

背景 有三張表ltd1 、ltd0051和、ltd0011ltd1作為主表,左關聯 ltd0051和ltd0011如果ltd0051有兩條重復數據、td0011有兩條重復數據,左關聯之后就會得到4條,同時ltd0051和ltd0011這兩條數據都是正確,基于主鍵我們需要將兩個相同主鍵…

【全開源】AJAX家政上門服務系統小程序自營+多商家(高級授權)+獨立端

基于FastAdmin和原生微信小程序開發的一款同城預約、上門服務、到店核銷家政系統,用戶端、服務端(高級授權)、門店端(高級授權)各端相互依賴又相互獨立,支持選擇項目、選擇服務人員、選擇門店多種下單方式,支持上門服務和到店核銷兩種服務方式…

深入理解數倉開發(一)數據技術篇之日志采集

前言 今天開始重新回顧電商數倉項目,結合《阿里巴巴大數據之路》和尚硅谷的《劍指大數據——企業級電商數據倉庫項目實戰 精華版》來進行第二次深入理解學習。之前第一次學習數倉,雖然盡量放慢速度力求深入理解,但是不可能一遍掌握&#xff0…