Redis 緩存過期及刪除

一、Redis緩存過期策略

物理內存達到上限后,像磁盤空間申請虛擬內存(硬盤與內存的swap),甚至崩潰。

內存與硬盤交換 (swap) 虛擬內存,頻繁I0 性能急劇下降,會造成redis內存急劇下降;?

一般設置物理內存的3/4,在redis.conf中

maxmemory 1024mb

?二、過期時間

? ? ? ? 2.1 數據結構原理

聲明數據expires來存儲過期時間,redis使用c語言開發,dict是字典,存儲key-value結構,類似于map

1、dict 用來維護一個Redis 數據庫中包含的所有 Key-Value 鍵值對。
2、expires則用于維護一個 Redis 數據庫中設置了失效時間的鍵(即key與失效時間的映射)。
3、執行過程:當我們使用 expire命令設置一個key的失效時間時,Redis 首先到dict這個字典表中查找要設置的key是否存在,如果存在就將這個key和失效時間添加到expires這個字典表
當我們使用 setex命令向系統插入數據時,Redis 首先將 Key 和 Value 添加到dict這個字典表中,然后將Key和失效時間添加到expires這個字典表中。
4、設置了失效時間的key和具體的失效時間全部都維護在expires這個字典表中。

2.2 設置超時時間

設置超時時間:
set name:2 111 PX 3000

三、過期key的刪除策略

3.1 惰性刪除

????????在key被訪問時如果發現它已經失效,那么就刪除它,調用expirelfNeeded函數,該函數的意義是: 讀取數據之前先檢查一下它有沒有失效,如果失效了就刪除它。

?

?3.2 主動刪除

3.2.1 刪除策略介紹

?觸發時機:當內存超過maxmemory限定時,觸發主動清理策略,該策略由啟動參數的配置決定。

? 策略種類:主動刪除策略LRU,LFU,random,ttl,noenviction。

????????在redis.conf文件中可以配置主動刪除策略,默認是no-enviction (不刪除)

maxmemory-policy alTkeys-Tru

3.2.2 LRU

????????LRU(Least recently used)最近最少使用(類似java的linkedHashMap),刪除不經常被訪問的數據。最常見的實現是使用一個鏈表保存緩存數據,詳細算法實現如下:
1.新數據插入到鏈表頭部;
2.每當緩存命中 (即緩存數據被訪問) ,則將數據移到鏈表頭部
3.當鏈表滿的時候,將鏈表尾部的數據丟棄。?

3.2.3 LFU

從已設置過期時間的數據集挑選使用頻率最低的數據淘汰。

3.2.4 ttl

從已設置過期時間的數據集中挑選將要過期的數據淘汰。

3.2.5 volatile-random

從已設置過期時間的數據集中任意選擇數據淘汰。

3.2.6?noenviction

Redis 的默認策略。在內存超過閥值后,Redis 不做任何清理工作,然后對所有寫操作返回錯誤,但對讀請求正常處理。

3.2.7 可參考連接

面試官,請不要再問我 Redis 的淘汰策略了!_楊同學technotes的博客-CSDN博客

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

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

相關文章

內存不足V4L2 申請DMC緩存報錯問題

當內存不足時,V4L2可能存在申請DMA緩存報錯,如下日志: 13:36:54:125 [15070.640862] rkcifhw fdfe0000.rkcif: swiotlb buffer is full (sz: 1843200 bytes) 13:36:54:125 [15070.640891] rkcifhw fdfe0000.rkcif: swiotlb: coherent allocation failed, size=1843200 13:3…

超分辨率地震速度模型

文獻分享 1. Multitask Learning for Super-Resolution 原題目:Multitask Learning for Super-Resolution of Seismic Velocity Model 全波形反演(FWI)是估算地下速度模型的強大工具。與傳統反演策略相比,FWI充分利用了地震波的…

typedef

t y p e d e f typedef typedef 聲明&#xff0c;簡稱typedef&#xff0c;是創建現有類型的新名字。 比如&#xff1a; #include <bits/stdc.h> using namespace std; typedef long long ll; int main() {ll n;scanf("%lld",&n);printf("%lld"…

C++ 面向對象三大特性——多態

?<1>主頁&#xff1a;我的代碼愛吃辣 &#x1f4c3;<2>知識講解&#xff1a;C 繼承 ??<3>開發環境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;面向對象三大特性的&#xff0c;封裝&#xff0c;繼承&#xff0c;多態&#xff…

30W IP網絡有源音箱 校園廣播音箱

SV-7042XT是深圳銳科達電子有限公司的一款2.0聲道壁掛式網絡有源音箱&#xff0c;具有10/100M以太網接口&#xff0c;可將網絡音源通過自帶的功放和喇叭輸出播放&#xff0c;可達到功率30W。同時它可以外接一個30W的無源副音箱&#xff0c;用在面積較大的場所。5寸進口全頻低音…

RNN模型簡單理解和CNN區別

目錄 神經網絡&#xff1a;水平方向延伸&#xff0c;數據不具有關聯性 ? RNN&#xff1a;在神經網絡的基礎上加上了時間順序&#xff0c;語義理解 ?RNN: 訓練中采用梯度下降&#xff0c;反向傳播 ? 長短期記憶模型 ?輸出關系&#xff1a;1 toN&#xff0c;N to N 單入…

Spring三級緩存

目錄 循環依賴問題 三級緩存 三級緩存創建Bean的流程&#xff08;解決循環依賴問題&#xff09; 三級緩存的局限性 Spring的三級緩存是為了解決單例Bean的循環依賴問題而存在的。 循環依賴問題 簡單來說就是A依賴B&#xff0c;而B又依賴A。即創建A的時候&#xff0c;需要先…

【HarmonyOS】【DevEco Studio】ohpm安裝失敗該如何解決?

【關鍵詞】 HarmonyOS、DevEco Studio、ohpm安裝失敗 【問題背景及解決方案】 最近遇到很多DevEco Studio安裝ohpm失敗的問題&#xff0c;下面給大家介紹幾種出現的問題以及解決方案&#xff1a; 1、ohpm not set up&#xff0c;報錯截圖如下&#xff1a; ? 解決方案&…

一百六十、Kettle——Linux上安裝的Kettle9.2.0連接Hive3.1.2

一、目標 Kettle9.2.0在Linux上安裝好后&#xff0c;需要與Hive3.1.2數據庫建立連接 之前已經在本地上用kettle9.2.0連上Hive3.1.2 二、各工具版本 &#xff08;一&#xff09;kettle9.2.0 kettle9.2.0安裝包網盤鏈接 鏈接&#xff1a;https://pan.baidu.com/s/15Zq9w…

C++中class嵌套時構造函數,析構函數調用的順序

#include<iostream> using namespace std; class Phone { public:Phone(string pname){m_pnamepname;cout<<"phone的構造函數調用"<<endl;}~Phone(){cout<<"Phone的析構函數調用"<<endl;}string m_pname; }; class Person {…

網安周報|Monti Ransomware團伙推出了一個新的Linux加密器

Monti Ransomware團伙推出了一個新的Linux加密器 經過兩個月的休息&#xff0c;Monti 勒索軟件運營商帶著新的 Linux 版本的加密器返回。該變體被用于針對政府和法律部門組織的攻擊。研究人員注意到兩個團伙的TTP之間有多個相似之處&#xff0c;Monti運營商還基于Conti泄露的源…

2023 Robocom 游記+題解

Robocom賽前一天熬夜打了一場edu,全程瞇瞇眼&#xff0c;三題滾粗了&#xff0c;前三題花了一小時才寫完&#xff0c;第四題寫了一小時也沒寫明白&#xff0c;好像預示著Robocom的結局&#xff1f; 早上七點醒了&#xff0c;感覺自己渾身無力&#xff0c;想睡覺但是又睡不著的…

AutoSAR配置與實踐(基礎篇)3.3 BSW的通信功能

傳送門 -> AUTOSAR配置與實踐總目錄 AutoSAR配置與實踐&#xff08;基礎篇&#xff09;3.3 BSW的通信功能 一、收發過程概覽1.1 發送過程概覽1.2 接收過程概覽 二、BSW的通信功能模塊組成三、收發過程解析3.1 發送過程3.2 發送后的結果確認3.3 接收過程 一、收發過程概覽 1…

Airbnb開源數據可視化工具Visx

一、什么是visx visx 是用于 React 的富有表現力的底層可視化組件集合,結合了 d3 的強大功能來生成可視化,以及 React 更新 DOM 的諸多優勢。 在 Airbnb 內部,visx 的目標是統一整個公司的可視化堆棧,在此過程中,創建了 visx 項目,從而有效的將 D3 的強大功能與 React …

內核調試之devmem直接讀寫寄存器

今天分享一個內核調試實用工具——devmem。 相信很多做底層驅動的人都會經常用到。 什么是devmem&#xff1f; 在Linux系統&#xff0c;如果我們想要訪問某個寄存器&#xff0c;就需要寫一個驅動程序&#xff0c;在驅動中映射寄存器地址&#xff0c;轉為虛擬地址后就可以訪問…

windows電腦系統自帶的畫圖工具如何實現自由拼圖

1.首先選中你要拼接的第一張圖片&#xff0c;右鍵選著編輯&#xff0c;會自動打開自帶的畫圖工具 然后就是打開第一張圖片&#xff0c;如下圖所示 接著就是將畫布托大&#xff0c;如下圖所示。 然后點擊選擇&#xff0c;選擇下面的空白區域&#xff0c;選著區域的范圍要比準備拼…

05-微信小程序常用組件-表單組件

05-微信小程序常用組件-表單組件 文章目錄 表單組件button 按鈕案例代碼 form 表單案例代碼 image 圖片支持長按識別的碼案例代碼 微信小程序包含了六大組件&#xff1a; 視圖容器、 基礎內容、 導航、 表單、 互動和 導航。這些組件可以通過WXML和WXSS進行布局和樣式設…

jQuery第一次接觸

jQuery是一個輕量級js庫 1.下載jquery庫&#xff0c;網址Download jQuery | jQuery npm i jquery 2.還可以從cdn中載入jquery <script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> 3.j代表js&#xff0c;query代表查詢&#xff0c;jQu…

超實用的40道JAVA經典算法題(含答案)

作為一名Java程序員&#xff0c;想要拿到一份滿意的offer&#xff0c;就必須做好充足的準備。眾所周知&#xff0c;算法可以說是大廠面試Java程序員的必問題。好的算法可以讓性能得到萬倍提升&#xff0c;做到毫秒級處理千萬數據的程度。因此&#xff0c;算法的重要性不言而喻&…

fedora

about firewall well, I don’t know how to use fedora firewall,but it I come up with that I can use ubuntu’s ufw for blocking evil connection, download wps extremely boredness drove me to install fedora&#xff0c; It can use wps pdf&#xff0c;但我仍然…