黑馬點評-Redis的緩存擊穿,緩存雪崩,緩存穿透,互斥鎖,邏輯過期

文章目錄

  • 1.緩存穿透
  • 2.緩存雪崩
  • 3.緩存擊穿
    • 3.1 互斥鎖
    • 3.2 基于邏輯過期

1.緩存穿透

在這里插入圖片描述

解決辦法
在這里插入圖片描述

寫入NULL值到Redis緩存,以后就會命中Redis的控制緩存而不會出現請求直接打到數據庫的問題!
代碼
在這里插入圖片描述
在這里插入圖片描述

2.緩存雪崩

這個概念很好理解,雪崩就是無數的小雪花結構突然因為外界傳遞的巨大能量而受到破壞,因此無數雪花結構崩潰導致雪崩,這里緩存里面的key也是一樣的,大量的key同時失效導致大量請求打到數據庫,導致數據庫崩潰!

在這里插入圖片描述

3.緩存擊穿

在這里插入圖片描述

在這里插入圖片描述

3.1 互斥鎖

利用到了Redis的setnx指令,這種指令設置的key是只有該key不存在時才會被修改成功,如果該key已經存在,則無法修改該key。利用該特性,如果大量的線程來到獲取該key并修改該key為1,那么實際上只有1個key才會被修改成功,并且java中提供了相應的函數提供此功能,如果修改成功,那么返回True,如果修改失敗,那么返回false,根據此特性,如果我們使用該函數如果返回False那就是獲取互斥鎖失敗,如果True那就是獲取互斥鎖成功!接著我們可以直接使其他所有的相關線程Sleep就完事兒了,等到獲取互斥鎖成功的線程執行完重構緩存的命令完了之后再來訪問!原來成功獲取鎖的線程就直接返回舊的緩存數據即可!這個就是互斥鎖原理!
在這里插入圖片描述

3.2 基于邏輯過期

邏輯過期的應用場景是對于熱點Key的訪問,比如商家做活動的時候,系統里面有經常訪問到的key,這種key就是熱點key。
在這里插入圖片描述
邏輯過期給出的解決方案:
在邏輯過期的解決方案里面,熱點key的緩存的TTL都是直接設置為-1的,即永久保存在Redis中,但是這樣我們如何區分這些個熱點key有無過期呢?于是我們設置了expire字段,標記他有無過期,如果當前時間在這個expire之前,那么就是該熱點key沒過期,直接去做緩存重建,重置熱點key的expire(在原來expire過期時間上再次加上30分鐘),如果過期了,那就直接返回舊的緩存數據,獲取鎖完成緩存重建,用線程池里面的線程完成緩存重建!這樣無論如何都能保證到熱點key永不過期,永遠不會說是熱點key過期了的瞬間又瞬間來了大量的請求打到后臺數據庫導致數據庫宕機!
一般來說在這套流程里面,緩存都是命中的,如果沒命中,只能說明這個key不是熱點key,中了就是熱點key。因為我們的Redis都是提前緩存好了許多的熱點key的,熱點key才會命中,冷門key就沒命中,因為冷門key不在Redis里面。在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

【LLM大模型書】從零開始大模型開發與微調:基于PyTorch與ChatGLM (附PDF)

今天又來給大家推薦一本大模型方面的書籍<從零開始大模型開發與微調&#xff1a;基于PyTorch與ChatGLM>。 本書使用PyTorch 2.0作為學習大模型的基本框架&#xff0c;以ChatGLM為例詳細講解大模型的基本理論、算法、程序實現、應用實戰以及微調技術&#xff0c;為讀者揭…

設備樹在Linux系統的屬性

設備樹源文件 設備樹源文件擴展名為.dts&#xff0c;我們在前面移植 Linux 的時候卻一直在使用.dtb 文件&#xff0c;那么 DTS 和 DTB 這兩個文件是什么關系呢&#xff1f; DTS 是設備樹源碼文件&#xff0c; DTB 是將 DTS 編譯以后得到的二進制文件。將.dts 編譯為.dtb 需要什…

【微信小程序開發實戰項目】——如何制作一個屬于自己的花店微信小程序(2)

&#x1f468;?&#x1f4bb;個人主頁&#xff1a;開發者-曼億點 &#x1f468;?&#x1f4bb; hallo 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;?&#x1f4bb; 本文由 曼億點 原創 &#x1f468;?&#x1f4bb; 收錄于專欄&#xff1a…

FreeRTOS和UCOS操作系統使用筆記

FreeRTOS使用示例 UCOS使用示例 信號量使用 信號量訪問共享資源區/ OS_SEMMY_SEM; //定義一個信號量&#xff0c;用于訪問共享資源OSSemCreate ((OS_SEM* )&MY_SEM, //創建信號量&#xff0c;指向信號量(CPU_CHAR* )"MY_SEM", //信號量名字(OS_SEM_CTR )1, …

軟件模型分類及特點

在軟件開發的世界里&#xff0c;我們經常會遇到業務模型、系統模型和軟件模型這三個層次。這些模型各有特點&#xff0c;相互之間也有著緊密的聯系。通過理解這三個層次之間的映射關系&#xff0c;我們能更好地理解和掌握軟件開發的全過程 1. 業務模型 業務模型描述了組織的業…

政務單位網站SSL證書選擇策略

在數字化快速發展的今天&#xff0c;政務單位網站作為政府與公眾溝通的重要橋梁&#xff0c;其安全性和可信度顯得尤為重要。SSL證書作為保障網站安全的重要手段&#xff0c;其選擇對于政務單位網站來說至關重要。本文將探討政務單位網站在選擇SSL證書時應該考慮的因素&#xf…

如何使用python網絡爬蟲批量獲取公共資源數據教程?

原文鏈接&#xff1a;如何使用python網絡爬蟲批量獲取公共資源數據教程&#xff1f;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608240&idx4&snef281f66727afabfaae2066c6e92f792&chksmfa826657cdf5ef41571115328a09b9d34367d8b11415d5a5781dc4c…

【AI提升】如何使用大模型:本機離線和FastAPI服務調用

大模型本身提供的功能&#xff0c;類似于windows中的一個exe小工具&#xff0c;我們可以本機離線調用然后完成具體的功能&#xff0c;但是別的機器需要訪問這個exe是不可行的。常見的做法就是用web容器封裝起來&#xff0c;提供一個http接口&#xff0c;然后接口在后端調用這個…

KV260視覺AI套件--PYNQ-DPU-Resnet50

目錄 1. 簡介 2. 代碼解析 3. 全部代碼展示 4. 總結 1. 簡介 本文以 Resnet50 為例&#xff0c;展示使用 PYNQ 調用 DPU 運行 Resnet50 網絡的詳細過程&#xff0c;并對其中關鍵代碼做出解釋。 PYNQ是一個針對Xilinx Zynq平臺的Python開發框架&#xff0c;它允許開發者使…

KEYSIGHT是德科技 E5063A ENA 系列網絡分析儀

E5063A ENA 矢量網絡分析儀 18GHz 2端口 降低無源射頻元器件的測試成本 Keysight E5063A ENA 是一款經濟適用的臺式矢量網絡分析儀&#xff0c;可用于測試簡單的無源元器件&#xff0c;例如頻率最高達到 18 GHz 的天線、濾波器、電纜或連接器。 作為業界聞名的 ENA 系列…

深入解析 Laravel 事件系統:架構、實現與應用

Laravel 的事件系統是框架中一個強大且靈活的功能&#xff0c;它允許開發者在應用程序中定義和使用自定義事件和監聽器。這個系統基于觀察者模式&#xff0c;使得代碼解耦和可維護性大大提高。在本文中&#xff0c;我們將深入探討 Laravel 事件系統的工作原理、如何實現自定義事…

python @裝飾器的用法

裝飾器&#xff08;decorators&#xff09;是 Python 中的一種高級特性&#xff0c;它允許開發者修改函數或方法的行為&#xff0c;而不改變其定義。裝飾器通常用于日志記錄、權限檢查、性能測量等場景。裝飾器是通過在函數定義的前一行加上 decorator_name 來使用的。 基本用…

Qt簡單文本查找

Qt版本&#xff1a; Qt6 具體代碼&#xff1a; 1. 頭文件 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class QLineEdit; class QDialog; class QPushButton; class QVBoxLayout; class QTextEdit;QT_BEGIN_NAMESPACE namespace Ui…

為什么AI算法工程師要求C++?

在開始前剛好我有一些資料&#xff0c;是我根據網友給的問題精心整理了一份「c&#xff0b;&#xff0b;的資料從專業入門到高級教程」&#xff0c; 點個關注在評論區回復“666”之后私信回復“666”&#xff0c;全部無償共享給大家&#xff01;&#xff01;&#xff01;能跑出…

找到字符串中所有子串出現的位置python

直接find干就完了。 如果你希望找到字符串中所有子串出現的位置&#xff0c;而不僅僅是一個位置&#xff0c;你可以通過循環查找并收集所有起始位置。以下是修改后的代碼&#xff1a; def find_all_substring_positions(string, substring): positions [] # 用于存儲所有…

與枚舉結合的策略模式

枚舉類&#xff1a; package com.dtranx.tools.corpora.businessapi.enums;import com.dtranx.tools.commons.vo.EnumResponseVo; import com.google.common.collect.Lists;import java.util.List;/*** ClassName SimpleSearchMode* Description TODO* Date 2024/5/28 15:55* A…

VTK- 可視化過程 四種坐標系統

可視化工具包 VTK(Visualization Toolkit),是一種開源的可視化軟件系統,主要實現計算機圖形學、圖像分析、渲染、圖像處理等功能。VTK 包含一個 C類庫和多個不同語言調用接口層&#xff0c;主要針對2D、3D 圖像和可視化用圖設計。 VTK設計作為一個工具包&#xff0c;不依賴于特…

學校衛星電子怎么自動校準時間呢

在學校的教室里&#xff0c;衛星電子鐘精準地為師生們提供著時間服務&#xff0c;而其自動校準時間的功能令人稱奇。那么&#xff0c;學校衛星電子鐘是如何實現自動校準時間的呢&#xff1f; 學校衛星電子鐘自動校準時間的原理基于衛星導航系統。常見的如北斗衛星導航系統或 GP…

知迪科技驚艷亮相高工智能汽車開發者大會,精彩演講直擊行業痛點、探索未來趨勢

6月27-28日&#xff0c;高工智能汽車開發者大會在上海隆重舉行&#xff0c;知迪科技受邀攜產品與解決方案出席此次大會。 智能汽車已經進入跨域融合新時代。為了進一步降低成本和增強協同&#xff0c;汽車電子架構的設計開始向跨域融合方向演進&#xff0c;并且變革的速度在加快…

java 面試題 - 索引

上腦圖&#xff0c;大家要記住&#xff01;&#xff01; 看不清&#xff0c;上大圖&#xff01; 這幾總結就夠用&#xff01;&#xff01;