緩存雪崩、緩存穿透,緩存擊穿

Redis是一個完全開源免費的高性能非關系型(NOSQL)的key-value數據庫。 Redis不可能把所有的數據都緩存起來(內存昂貴且有限),所以Redis需要對數據 設置過期時間,并采用的是惰性刪除+定期刪除兩種策略對過期鍵刪除。Redis對過期鍵的策略+持久化 如果緩存數據設置的過期時間是相同的,并且Redis恰好將這部分數據全部刪光了。這就會導致在這段時 間內,這些緩存同時失效,全部請求到數據庫中。

Redis中緩存的數據大面積同時失效,或者Redis宕機,從而會導致大量請求直接到數據庫,壓垮數據庫 緩存雪崩如果發生了,很可能就把我們的數據庫搞垮,導致整個服務癱瘓!

解決方法: 在緩存的時候給過期時間加上一個隨機值,這樣就會大幅度的減少緩存在同一時間過期。 對于“Redis掛掉了,請求全部走數據庫”這種情況,我們可以有以下的思路: 事發前:實現Redis的高可用(主從架構+Sentinel 或者Redis Cluster),盡量避免Redis掛掉這種情況發生。

事發中:萬一Redis真的掛了,我們可以設置本地緩存+限流,盡量避免我們的 數據庫被干掉(起碼能保證我們的服務還是能正常工作的)

事發后:redis持久化,重啟后自動從磁盤上加載數據,快速恢復緩存數據。

緩存穿透? 緩存穿透是指查詢一個一定不存在的數據。由于緩存不命中,并且出于容錯考慮,如果從數據庫查不到 數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到數據庫去查詢,失去了緩存的意義 請求的數據在緩存大量不命中,導致請求走數據,也可能壓垮數據庫,導致整個服務癱瘓!

如何解決緩存穿透 由于請求的參數是不合法的(每次都請求不存在的參數),于是我們可以使用布隆過濾器(BloomFilter)提前攔截,不合法就不讓這個請求到數據庫層! 當我們從數據庫找不到的時候,我們也將這個空對象設置到緩存里邊去。下次再請求的時候,就可以從 緩存里邊獲取了。 這種情況我們一般會將空對象設置一個較短的過期時間。

緩存擊穿 Redis中一個熱點key在失效的同時,大量的請求過來,從而會全部到達數據庫,壓垮數據庫。 這里要注意的是這是某一個熱點key過期失效,和緩存雪崩是有區別的。比如淘寶雙十一,對于某個特價熱門的商品信息,緩存在Redis中,剛好0點,這個商品信息在Redis中過期查不到了,這時候大量的用戶又同時正好訪問這個商品,就會造成大量的請求同時到達數據庫。

解決辦法 設置熱點數據"永不過期" 或者定時更新,加上互斥鎖:上面的現象是多個線程同時去查詢數據庫的這條數據,我們 可以在第一個查詢數據的請求上使用一個互斥鎖來鎖住它 其他的線程走到這一步拿不到鎖就等著,等 一個線程查詢到了數據,然后將數據放到redis緩存起來。 后面的線程進來發現已經有緩存了,就直接走緩存。

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

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

相關文章

springmvc跨域解決方案

在Spring MVC中處理跨域請求(CORS,Cross-Origin Resource Sharing)通常涉及到配置HTTP響應頭,以允許來自不同源的請求。Spring MVC提供了多種方式來配置CORS,包括全局配置和局部配置。 使用CrossOrigin注解 在控制器的…

btstack移植之安全配對(二)

3.13.3 Legacy配對首先,我們回復的paring response中,可以看到我們不支持secure connection,所以我們走的是legacy配對模式。圖3-74 secure連接不支持然后,master在pairing confirm包中回復了confirm value。圖3-75 master發送con…

FRP配置( CentOS 7 上安裝 FRP教程 )

** 如果你們公司沒有公網IP,但是又想實現內網穿透,遠程調用接口,在家也能調用公司服務器,但是nkg ssl有問題,花生殼坑壁,那么FRP是你最佳的選擇!!!** 不過有個前提&#…

第三次mysql作業

建立庫建立mydb11_syu庫2.創建s表,創建sc表二.插入數據向s表插入數據2.向sc表插入數據三.查詢1.分別查詢student表和score表的所有記錄2.查詢student表的第2條到5條記錄3.從student表中查詢計算機系和英語系的學生的信息4.從student表中查詢年…

不同場景下git指令的搭配

添加賬號 git config --global user.name "YourName" git config --global user.email "your_emailexample.com"設置 Git 默認分支名稱為 main: git config --global init.defaultBranch main初始化倉庫: git init配置SSH 密鑰 如果…

NLP——遷移學習

一、遷移學習的概念 1.預訓練模型(Pretrained model) 定義: 簡單來說別人訓練好的模型。一般預訓練模型具備復雜的網絡模型結構;一般是在大量的語料下訓練完成的。 2.微調(Fine-tuning) 定義:一般是對預訓練語言模型,進行垂直領域數據的微調,…

Ubuntu 安裝

文章目錄硬件準備下載 Ubuntu 鏡像創建可啟動 USB從 USB 驅動器啟動安裝 Ubuntu不要忘記更新!用了十多年的筆記本,手邊正好有個500G的固態,準備換上。考慮到機器的硬件配置,現在使用windows10實在是有點卡,ubuntu卻剛好…

【46】MFC入門到精通——MFC顯示實時時間,獲取系統當前時間GetCurrentTime()、獲取本地時間GetLocalTime()

文章目錄1 MFC獲取時間方法方法一:獲取系統當前時間GetCurrentTime()方法二:獲取本地時間GetLocalTime()使用GetTickCount()獲取程序運行時間2 MFC顯示實時時間 使用方法2.1 獲取時間2.2 類向導 添加定時器函數 OnTimer2.3 初始化 設置定時器2.4 定時器函…

Linux717 SWAP擴容;邏輯卷條帶化

root192.168.235.20s password:┌────────────────────────────────────────────────────────────────────┐│ ? MobaXterm 20.0 ? ││ …

人類社會發展過程中的熵增定律

引子研究美國羅斯福新政期間的法案為什么會對美國經濟恢復起作用?與千金買馬骨和移木賞金之間的區別與聯系?以下為豆包 AI回答一、羅斯福新政法案對美國經濟起作用的原因羅斯福新政(1933-1939年)通過一系列政策應對大蕭條&#x…

Spring-AI系列-入門篇-核心概念、組件和生產要素

原文-Spring AI知識庫,歡迎大家評論互動 師父領進門,修行靠自己。 Spring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design an…

從瀏覽器到服務器:TCP 段的網絡傳輸之旅

本文以簡化的網絡架構為例,詳細介紹了當你在瀏覽器中輸入網址(例如www.google.com)并按下回車鍵后,TCP段的完整傳輸過程。我們將探討DNS解析、ARP、TCP/IP封裝、PAT和路由如何協同工作,將數據從個人電腦通過局域網和廣…

HCIE - 云計算拿下后的職業選擇如何規劃?

Hello!大家好,小編是一名專注 IT 領域的資深探索家。我們聊聊HCIE - 云計算,這個認證作為華為認證體系中云計算領域的專家級認證,標志著持有者具備企業級云架構設計、復雜云平臺運維及跨場景技術落地能力。但認證本身只是職業進階…

1-創建Vue3項目

創建Vue3項目前提 已安裝 18.3 或更高版本的 Node.js vue 官網 https://vuejs.org/ 創建一個 Vue 應用 ① 新建項目目錄,使用 VSCode 打開 VSCode 可安裝 Vue-Official 插件協助開發 ② 執行 create vue 指令創建 vue 應用 npm create vuelatest這一指令將…

Codex,Copilot 是什么

Codex是什么 Codex 是 OpenAI 研發的一款專注于代碼生成的大型語言模型,它可以根據自然語言描述自動編寫程序代碼,在軟件開發、自動化測試等領域展現出了強大的應用潛力。下面為你詳細介紹: 1. 核心功能 代碼生成:Codex 能夠依據自然語言指令生成代碼,像函數、類或者完整…

Typecho插件開發:自定義表單驗證規則addRule實戰指南

文章目錄 Typecho表單驗證進階:為插件和主題添加自定義addRule驗證規則 引言 一、Typecho表單驗證基礎 1.1 Typecho表單系統概述 1.2 addRule方法解析 二、自定義驗證規則實現 2.1 創建自定義驗證類 2.2 注冊自定義驗證規則 2.3 使用自定義驗證規則 三、高級驗證場景實現 3.1 …

數據分布是如何影響目標檢測精度的

文章目錄一、研究背景與目標模型效果提升數據集優化二、研究問題明細各方向的關聯性與核心邏輯1. 高質量數據集的高效篩選與主動學習應用2. 基于推理結果的數據補充與增強方向優化3. 多類別場景下目標尺度與模型精度的關聯性4. 損失函數與數據增強對精度的量化影響5. 目標類型專…

Python 網絡爬蟲 —— 代理服務器

一、會話(Session)(一)核心邏輯HTTP 本身無記憶,每次請求獨立。會話(Session) 就是為解決這問題,讓客戶端(瀏覽器)和服務器 “記住” 交互狀態(比…

Vue在線預覽Excel和Docx格式文件

前提:本次示例基于Vue2.x,所用插件為Vue-Office。 一、Vue-Office 插件簡介 Vue-Office 是一個一站式解決方案,支持多種 Office 文件格式的在線預覽,包括: Word(.docx)Excel(.xlsx、…

提升(Boosting)及 Python 示例

咱們結合這張圖,把 “提升” 想象成 “做錯題本 請老師補課” 的過程:第一波數據(最上面的圓圈):“第一次作業”假設你第一次做 100 道數學題(圖中圓圈里的綠點白點代表不同的題),做…