Redis進階--緩存

目錄

一、引言

二、介紹

1.為什么Mysql的速度慢呢?

2.緩存更新策略

1.定期生成

2.實時生成

3.redis的內存淘汰機制

4.注意事項

1.緩存預熱

2.緩存穿透

3.緩存擊穿

4.緩存雪崩

三、總結


一、引言

? 本篇文章將介紹Redis其中一個重要的作用,作為緩存。

二、介紹

Redis中的數據主要是存儲在內存中,讀取速度比硬盤快得多。

Redis一般是作為Mysql的緩存

1.為什么Mysql的速度慢呢?

1.數據存儲在硬盤上,磁盤的IO速度并不快,尤其是隨機訪問

2.查詢有時候沒有走索引,直接全表掃描了,速度下降

3.如果是復雜的查詢,比如聯合查詢,需要進行笛卡爾積的操作,速度會更慢

2.緩存更新策略

1.定期生成

會把訪問的數據以日志的形式記錄下來

統計這一段時間這些數據使用的頻率,然后將這些數據設置為熱點數據,放入Redis中

之后規定一定的時間自己去生成這些熱點數據

缺點:不能及時的更新,如果某個不是熱點數據的數據忽然變成了熱點數據,不能及時更新到redis中

2.實時生成

先去redis中查,查到了就返回。如果沒有查到就去mysql中查到,然后寫入到redis中

但是這樣redis會越寫越多,怎么解決呢?

3.redis的內存淘汰機制

1.寫滿了之后就不允許寫入了(不適合于實時更新)

2.沒有過期時間:淘汰使用頻率最低的,隨機淘汰

3.有過期時間:淘汰使用頻率最低的,隨機淘汰,淘汰時間即將過期的

淘汰存在最久的(FIFO),淘汰使用頻率最低的(LFU),淘汰最近一次使用時間最久的(LRU),隨機淘汰(RANDOM)

4.注意事項

1.緩存預熱

項目剛啟動的時候,先將部分沒有訪問的數據放入到redis中

2.緩存穿透

查詢的某個key,在redis中不存在,在mysql中也沒有,大量的請求都到達mysql了,會使得mysql宕機。

解決方式:1.進行參數檢查? 2.當一個key查找數據庫中不存在時,把一個空對象或者默認值保存在緩存中,之后再訪問這個數據,從緩存中獲取(存在的問題:緩存中有更多的key了,占用空間,數據不一致問題)。3.布隆過濾器:會保存數據是否存在,如果判斷數據不在,就不會訪問存儲層。

3.緩存擊穿

某個時期一個熱點key突然過期了,導致大量請求打到mysql上,導致mysql掛掉

解決方式:1.對熱點key永不過期

2.服務降級:關閉一些不是特別重要的功能

4.緩存雪崩

由于短時間內,大規模的key失效了,緩存命中率大幅下降,mysql的壓力迅速上升,甚至于宕機

解決方式:1.加強監控報警,加強redis集群可用性的保證

2.設置過期時間的時候添加一個隨機的因子/不設置過期時間

三、總結

? 本篇文章簡單介紹了Redis作為緩存的作用以及常見出現故障的情況,感謝觀看!

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

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

相關文章

微軟原版系統下載的幾個好用網站

“不要因為走得太遠,而忘記為什么出發。” 愿每一位Windows用戶,都能在這份情懷中找到屬于自己的小確幸!滿滿的情懷! 微軟官方渠道 微軟官網提供純凈的ISO鏡像下載,適用于Windows 10/11等系統。訪問Microsoft官網下…

kotlin Flow快速學習2025

其實,第一章節,只是讓你了解下Flow的基本情況。我們開發中,基本很少使用這種模式。所以來講,我們甚至可以直接使用StateFlow和SharedFlow才是正途。這是很多教程沒有說明的點。所以第一章隨便瀏覽下即可。日后再補充理解都是可以的…

【人工智能99問】什么是教師強制?(16/99)

文章目錄什么是教師強制?教師強制(Teacher Forcing)的定義原比例(Original Proportion)教師強制的舉例說明(一)教師強制的舉例說明(二)優點和缺點解決曝光偏差的方法什么…

【WPF】WPF 自定義控件之依賴屬性

📦 WPF 自定義控件之依賴屬性 在開發 WPF 應用時,自定義控件能幫助我們復用邏輯和樣式,但我很快會遇到一個問題:在控件內部如何支持數據綁定和屬性變更通知?特別是我們繼承自 Control 的時候,已經不能再繼承…

DOM型XSS破壞

目錄 首先 然后 第一種 第二種&#xff08;DOM&#xff09; HTMLCollection HTML Relationships Custom 解 首先 <script>//urlencode解碼 //location接口的hash屬性是一個字符串&#xff0c;包含一個“#”后跟位置URL的片段標識符。如果URL沒有片段標識符&#…

Linux C 多線程基本操作

我們已經了解進程的基本概念&#xff1a;進程是正在執行的程序&#xff0c;并且是系統資源分配的基本單位。當用戶需要在一臺計算機上去完成多個獨立的工作任務時&#xff0c;可以使用多進程的方式&#xff0c;為每個獨立的工作任務分配一個進程。多進程的管理則由操作系統負責…

C語言基礎:二維數組練習題

1. 一個二維數組賦了初值&#xff0c;用戶輸入一個數&#xff0c;在該二維數組中查找。找到則返回行列位置&#xff0c;沒找到則提示。#include <stdio.h>int main() {int arr[3][3] {{1, 2, 3},{4, 5, 6},{7, 8, 9}};int t;printf("要查找的數&#xff1a;")…

Java面試題034:一文深入了解MySQL(6)

Java面試題029&#xff1a;一文深入了解MySQL&#xff08;1&#xff09; Java面試題030&#xff1a;一文深入了解MySQL&#xff08;2&#xff09; Java面試題031&#xff1a;一文深入了解MySQL&#xff08;3&#xff09; Java面試題032&#xff1a;一文深入了解MySQL&#x…

Java基礎教程(011):面向對象中的構造方法

10-面向對象-構造方法 構造方法也叫做構造器、構造函數。 作用&#xff1a;在創建對象的時候給成員變量進行初始化的。 ? 一、構造方法的特點特點說明與類同名構造方法的名稱必須與類名相同沒有返回類型構造方法沒有返回值&#xff0c;甚至不能寫 void自動調用使用 new 創建對…

Adobe Photoshop:數字圖像處理的終極工具指南

Hi&#xff0c;我是布蘭妮甜 &#xff01;Adobe Photoshop自1990年問世以來&#xff0c;已經成為數字圖像處理領域的標桿和代名詞。這款強大的軟件不僅徹底改變了攝影、設計和藝術創作的方式&#xff0c;還深刻影響了我們消費和感知視覺內容的文化方式。從專業攝影師到社交媒體…

本期來講講什么是LVS集群?

集群和分布式 集群&#xff08;Cluster&#xff09;&#xff0c;解決某個問題將多臺計算機組合形成的系統群。 常見的集群類型&#xff1a; 負載均衡(LoadBalancing&#xff0c;簡稱LB)&#xff1a;由多個相同配置的主機組成&#xff0c;每個主機經過調度承擔部分訪問&#…

JVM 類加載過程筆記

一、概述 JVM&#xff08;Java Virtual Machine&#xff09;在運行 Java 程序時&#xff0c;需要將 .class 字節碼文件加載到內存中&#xff0c;并轉換成可以被 JVM 執行的數據結構&#xff0c;這一過程就是 類加載過程&#xff08;Class Loading Process&#xff09;。 JVM 的…

基于爬蟲技術的電影數據可視化系統 Python+Django+Vue.js

本文項目編號 25002 &#xff0c;文末自助獲取源碼 \color{red}{25002&#xff0c;文末自助獲取源碼} 25002&#xff0c;文末自助獲取源碼 目錄 一、系統介紹二、系統錄屏三、啟動教程四、功能截圖五、文案資料5.1 選題背景5.2 國內外研究現狀 六、核心代碼6.1 查詢數據6.2 新…

如何用 LUKS 和 cryptsetup 為 Linux 配置加密

在信息安全愈發重要的今天&#xff0c;為 Linux 系統盤配置全盤加密已經成為很多企業和個人的選擇。LUKS&#xff08;Linux Unified Key Setup&#xff09;配合工具 cryptsetup 可以在不犧牲性能的前提下實現高強度加密。本文將通過一個故事化的場景&#xff0c;介紹整個配置過…

VIVADO技巧_BUFGMUX時序優化

1.版本說明日期作者版本說明2025xxxx風釋雪初始版本 2.概述 基于VIVADO時序約束&#xff0c;BUFGMUX多路時鐘選擇原語的設計3.原語介紹 7系列FPGA/UltraSCale/UltraSCaleBUFGMUX_CTRL BUFGMUX_CTRL_inst (.O(O), // 1-bit output: Clock output.I0(I0), // 1-bit input: Cloc…

服務器系統時間不準確怎么辦?

服務器系統時間不準確可能會導致日志錯亂、任務調度失敗、SSL證書校驗錯誤等問題。以下是解決辦法&#xff1a;&#x1f310; 一、同步系統時間的方法1. 使用 timedatectl 命令&#xff08;適用于 systemd 系統&#xff09;timedatectl set-ntp true # 開啟自動同步 timedatect…

零信任產品聯合寧盾泛終端網絡準入,打造隨需而變、精準貼合業務的網絡安全訪問體系

零信任網絡訪問控制&#xff08;Zero Trust Network Access&#xff0c;ZTNA&#xff0c;文中零信任皆指 ZTNA&#xff09;基于“永不信任&#xff0c;持續驗證”的理念&#xff0c;打破了企業基于傳統網絡邊界進行防護的固有模式。在當前日趨復雜的網絡環境下&#xff0c;內部…

【未限制消息消費導致數據庫CPU告警問題排查及解決方案】

一、背景 某天下午&#xff0c;上游系統同一時間突然下了三個大合同數據&#xff0c;平均每個合同數據實例在6萬以上的量級&#xff0c;短短幾分鐘內瞬間有20萬左右的流量涌入系統。 而在正常情況下&#xff0c;系統1天處理的流量也不過2千量級&#xff0c;當時數據庫指標監控告…

iOS開發 Swift 速記2:三種集合類型 Array Set Dictionary

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…