Redis沖沖沖——事務支持,AOF和RDB持久化

目錄

  • 引出
  • Redis事務支持,AOF和RDB持久化
    • 1、Redis的事務支持
    • 2、Redis的持久化
  • Redis沖沖沖——緩存三兄弟:緩存擊穿、穿透、雪崩
    • 緩存擊穿
    • 緩存穿透
    • 緩存雪崩
  • 總結

引出

Redis沖沖沖——事務支持,AOF和RDB持久化


Redis事務支持,AOF和RDB持久化

1、Redis的事務支持

事務:一段具有明確開始,結束標記的,并且執行順序是有序的執行過程!

比如:張三給李四轉錢 5000

ACID:原子性,一致性,隔離性,持久性

咱們Redis同樣支持事務!配合關系型數據庫進行事務支持!

開啟事務:multi

執行事務:exec

撤銷事務:discard

監控某Key:watch 采用原理:樂觀鎖

在這里插入圖片描述

樂觀鎖:依靠版本控制來進行實現,底層原理:CAS Comparable And Swap 比較并交換 (用戶在操作庫的時候,樂觀的認為:一定沒有人和我同時操作同一條數!)


悲觀鎖:(用戶在操作庫的時候,悲觀的認為:一定有人和同時操作同一條數據),依舊數據庫底層上鎖:在SQL語句后,添加:select * from 表 for update;

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

在需要控制事務的方法上,添加注解@Transactional

2、Redis的持久化

Redis的數據,更多的依賴于內存,問題:可能存在數據丟失的問題

解決:Redis提供持久化機制(RDB,AOP)

所以Redis為了解決內存不靠譜的問題, 提供2種:硬盤持久化方案

RDB AOF

(1)、RDB

Redis Database Backup file

RDB (Redis Database)是Redis默認的一種持久化方案!叫:快照模式

原理:dump.rdb文件來進行存儲Redis當前的數據狀態!

下載Redis的配置文件:

curl -o redis.conf https://raw.githubusercontent.com/redis/redis/6.0/redis.conf

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

60S—-1分鐘范圍內,如果redis監控到有10000條數據的變化,開始持久化

300S—5分鐘范圍內,如果redis監控到有10條數據的變化,開始持久化

900S —15分鐘范圍內,如果redis監控到有1條數據的變化,開始持久化

所以RDB在一定程度上,可能存在數據丟失的問題

在這里插入圖片描述

Redis服務器,會定時開啟子進程,在固定時間掃描內存的數據變化 ,當條件滿足,則將變化先通過臨時文件中去,最后

再將臨時文件的內容,寫入到dump.rdb文件中,即可完成持久化


如果需要修改:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

取消本機綁定

在這里插入圖片描述

取消本機客戶端保護模式

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

為了保護redis,請大家設置連接密碼:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

提醒下:在vim中使用“/關鍵字”快速查找關鍵字;并通過N或n 快速定位上一個/下一個

修改redis.conf的權限

chmod 777 redis.conf

重新創建一個Redis的Docker容器:

docker run --name myredis -p 6379:6379 -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /root/redis/data:/data --privileged=true -d redis:latest redis-server /usr/local/etc/redis/redis.conf

(2)、AOF

AOF Append Only File 采用日志追加的方式,來記錄Redis的相關操作命令!

MySQL 有一種二進制日志文件,記錄:用戶對CUD的所有SQL語句!

AOF 記錄是用戶對Redis所有的命令!不是默認開啟的,需要 運維 手動通過配置文件進行開啟!

產生一個文件:appendonly.aof

追加方法:everysec (每秒追加一次日志), always(記錄每次操作),no (不記錄)

修改配置文件,開啟AOF:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

配置追加方式:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

AOF重寫的原理:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

Redis 會自動監控AOF文件的變化,當AOF文件達到64M,或達到上次重寫文件的2倍,就會觸發AOF文件重寫機制!

通過重寫AOF文件來實現持久化,Redis將進程分叉為2個進程,一個主進程,一個子進程;主進程繼續響應其他操作,子進程開啟重寫機制!

在重寫時,會產生2個文件,一個AOF的臨時文件,一個AOF的緩存文件,臨時文件用于重寫,緩存文件用于主進程記錄最新的命令操作;

子進程通過重寫整合命令至新的臨時文件,整合完成之后重命名為AOF文件,并整合緩存文件中的其他命令,完成重寫

AOF & RDB 如何選擇?

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

Redis沖沖沖——緩存三兄弟:緩存擊穿、穿透、雪崩

緩存擊穿

緩存擊穿:redis中沒有,但是數據庫有

順序:先查緩存,判斷緩存是否存在;如果緩存存在,直接返回數據;如果緩存不存在,則查詢數據庫,將數據庫的數據存入到緩存

在這里插入圖片描述

解決方案:將熱點數據設置過期時間長一點;針對數據庫的熱點訪問方法上分布式鎖;

緩存穿透

緩存穿透:redis中沒有,數據庫也沒有

在這里插入圖片描述

解決方案:

(1)將不存在的key,在redis設置值為null;

(2)使用布隆過濾器;

原理:https://zhuanlan.zhihu.com/p/616911933

在這里插入圖片描述

布隆過濾器:

如果確認key不存在于redis中,那么就一定不存在;

它說key存在,就有可能存在,也可能不存在! (誤差)

在這里插入圖片描述

布隆過濾器

1、根據配置類中的 key的數量 ,誤差率,計算位圖數組【二維數組】

2、通過布隆過濾器存放key的時候,會計算出需要多少個hash函數,由hash函數算出多少個位圖位置需要設定為1

3、查詢時,根據對應的hash函數,判斷對應的位置值是否都為1;如果有位置為0,則表示key一定不存在于該redis服務器中;如果全部位置都為1,則表示key可能存在于redis服務器中;

緩存雪崩

緩存雪崩:

Redis的緩存雪崩是指當Redis中大量緩存數據同時失效或者被清空時,大量的請求會直接打到數據庫上,導致數據庫瞬時壓力過大,甚至宕機的情況。

造成緩存雪崩的原因主要有兩個:

1.相同的過期時間:當Redis中大量的緩存數據設置相同的過期時間時,這些數據很可能會在同一時間點同時失效,導致大量請求直接打到數據庫上。

2.緩存集中失效:當服務器重啟、網絡故障等因素導致Redis服務不可用,且緩存數據沒有自動進行容錯處理,當服務恢復時大量的數據同時被重新加載到緩存中,也會導致大量請求直接打到數據庫上。

預防緩存雪崩的方法主要有以下幾種:

1.設置不同的過期時間:可以將緩存數據的過期時間分散開,避免大量緩存數據在同一時間點失效。

2.使用加鎖:可以將所有請求都先進行加鎖操作,當某個請求去查詢數據庫時,如果還沒有加載到緩存中,則只讓單個線程去執行加載操作,其他線程等待該線程完成后再次進行判斷,避免瞬間都去訪問數據庫從而引起雪崩。

3.提前加載預熱:在系統低峰期,可以提前將部分熱點數據加載到緩存中,這樣可以避免在高峰期緩存數據失效時全部打到數據庫上。

4.使用多級緩存:可以在Redis緩存之上再使用一層緩存,例如本地緩存等,當Redis緩存失效時,還能夠從本地緩存中獲取數據,避免直接打到數據庫上。

在這里插入圖片描述

本地緩存:ehcache oscache spring自帶緩存 持久層框架的緩存


總結

Redis沖沖沖——事務支持,AOF和RDB持久化

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

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

相關文章

codeforces 1868A

題目鏈接 思路 當 m 1 m1 m1時 發現是 M M M是一條 0 0 0的縱列&#xff0c;最后結果是 0 0 0 其余構造方法大體為&#xff1a;每行把上一行第一位元素移到隊尾 當 n < m ? 1 n<m-1 n<m?1時 我們可以如下構造 0,1,2,3,4…m-1 1,2,3,4…m-1,0 2,3,4…m-1,0,1…

【內部消息】24上半年軟考可能支持平板、PC和手機等多平臺報名

根據內部消息&#xff0c;軟考網上報名系統正在改革&#xff0c;之前只能通過PC端報名的&#xff0c;下次報名可能支持平板、手機等多終端進行網上報名了。現在官方并沒有確切消息發出&#xff0c;這次變動可能發生在2024上半年&#xff0c;也有可能得到下半年才能實行。以下是…

一文讀懂MES之工藝路線

什么是工藝路線 工藝路線&#xff0c;又被稱為生產工藝流程或生產流程路線&#xff0c;是指在進行產品或零件的生產過程中&#xff0c;按照一定的生產順序排列的一系列的工藝過程。簡單來說就是如何從原材料或者半成品零件&#xff0c;一步一步加工和制作&#xff0c;最終制作…

LeetCode_Java_動態規劃系列(2)(題目+思路+代碼)

131.分割回文串 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正著讀和反著讀都一樣的字符串。 示例 1&#xff1a; 輸入&#xff1a;s "aab" 輸出&#xff1a;[["a&qu…

InnoDB索引與優化篇(3)-事務隔離級別與InnoDB的應用

MySQL是一種常用的關系型數據庫管理系統&#xff0c;而事務是數據庫中常用的一種機制。在MySQL中&#xff0c;事務的隔離級別以及使用InnoDB引擎進行事務處理是非常重要的。在本博客中&#xff0c;我們將探討MySQL數據庫事務隔離級別和InnoDB的應用。 事務是一組數據庫操作的集…

立即報名Atlassian Team’24,與龍智一同踏上前往數字服務的創新之路

拉斯維加斯&#xff0c;4月30日至5月2日—— Atlassian Team’24盛大舉行&#xff01;現已正式啟動報名&#xff0c;誠邀您的參與&#xff01;與龍智一同走進這場創新與協作的盛會&#xff0c;您將有機會親身感受100余場精彩紛呈的活動&#xff0c;深入探索Atlassian平臺如何助…

小程序常用樣式和組件

常用樣式和組件 1. 組件和樣式介紹 在開 Web 網站的時候&#xff1a; 頁面的結構由 HTML 進行編寫&#xff0c;例如&#xff1a;經常會用到 div、p、 span、img、a 等標簽 頁面的樣式由 CSS 進行編寫&#xff0c;例如&#xff1a;經常會采用 .class 、#id 、element 等選擇器…

【leetcode】相交鏈表

大家好&#xff0c;我是蘇貝&#xff0c;本篇博客帶大家刷題&#xff0c;如果你覺得我寫的還不錯的話&#xff0c;可以給我一個贊&#x1f44d;嗎&#xff0c;感謝?? 點擊查看題目 思路: struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *he…

海康威視2024校園招聘

海康威視2024全球校園招聘正式啟動 智未來&#xff0c;因你來&#xff0c;圖片附含內推碼

Flex布局常見屬性圖解

目錄 一、簡介二、父元素屬性2.1、flex-direction2.2、justify-content2.3、align-items2.4、flex-wrap2.5、flex-flow2.6、align-content 三、子元素屬性3.1、flex3.2、align-self3.3、order 一、簡介 Flex是Flexible Box的縮寫&#xff0c;意為”彈性布局”&#xff0c;用來為…

筆記本以太網集線器Hub充電可能導致網絡異常(貌似是我把服務器網關寫錯了)

文章目錄 筆記本以太網集線器&#xff08;Hub&#xff09;充電導致網絡異常概述原理分析電源與信號干擾設備熱度設備兼容性問題 解決方案升級固件提高設備散熱效率選擇兼容性好的設備 總結 今天用筆記本以太網直連服務器&#xff0c;一開始能連通&#xff0c;結果以太網hub插上…

c# Excel轉換成DataSet

/// <summary> /// Excel轉換成DataSet&#xff08;.xlsx/.xls&#xff09; /// </summary> /// <param name"filePath">Excel文件路徑</param> /// <param name"strMsg"></param> …

Vue-4

自定義創建項目 目標&#xff1a;基于 VueCli 自定義創建項目架子 大致步驟&#xff1a; 安裝腳手架創建項目 vue create 項目名稱選擇自定義 選擇 Manually select features 這一項 step-1:按下空格 : 選擇/取消--勾選請選擇&#xff1a;Babel、Router、CSS、Linterstep-2…

探索K8S的絕佳選擇:Killercoda與Play-with-K8s在線練習平臺

大家好&#xff0c;近年來Kubernetes&#xff08;K8S&#xff09;作為容器編排的瑞士軍刀&#xff0c;已經成為云原生技術的代表之一。學習K8S是現代云計算領域不可或缺的一部分&#xff0c;但很多人可能面臨一個問題——如何高效地學習K8S&#xff0c;尤其是缺乏實踐環境的初學…

藍橋杯 子矩陣 (找大小為a*b的矩陣的最大最小值的乘積,queue)

題目鏈接 &#xff1a; https://www.lanqiao.cn/problems/3521/learning/?subject_code1&group_code3&match_num14&match_flow1&origincup 思想 &#xff1a; 用堆維護最大值最小值即可 暴力實現 復雜度 N^2 * log(N^2) 代碼&#xff1a; #include<bit…

Vue3修改Element-plus語言與項目國際化

修改Element-plus默認語言 Element-plus默認語言是英語&#xff0c;可修改為其它語言&#xff1b; 此處 Element-plus 為自動按需導入方式配置&#xff1b; 更多導入方式&#xff1a;Vue3使用Element-plus-CSDN博客 全局配置默認語言參考&#xff1a;國際化 | Element Plus 統一…

文件對比工具Beyond Compare 4 mac v4.4.7(28397)中文版

Beyond Compare是一款適用于Windows、Mac OS X和Linux平臺的文件和文件夾比較工具。它可以幫助用戶比較和同步文件夾、文件和壓縮包等內容&#xff0c;支持多種文件格式&#xff0c;如文本、圖像、音頻、視頻等。 軟件下載&#xff1a;Beyond Compare 4 mac v4.4.7(28397)中文版…

Kafka中的acks機制——一次由錯誤資料引發的源碼學習

前言 這次的學習過程來歷有點奇怪。我本來是學習kafka過程中正常的學到了這個acks機制&#xff0c;但是發現很多地方寫的都不太明白。因此決定還是自己來看一下源碼。 具體來說&#xff1a;請看搜索結果&#xff08;Google引擎&#xff09; 這個是搜索“Kafka的ack”所得到的…

Excel中使用ROW函數自動更新行號或編號

操作步驟&#xff1a; 1、在編號“1”的單元格輸入公式“ROW()-1”&#xff1b; 2、在上一步填好公式的單元格基礎上下拉填充&#xff0c;即可批量得到編號&#xff0c;如果刪掉其中的一行或幾行&#xff0c;編號會自動進行更新。

數組與list的轉化分析

一、相互轉換的方法 1. 數組轉List &#xff0c;使用JDK中java.util.Arrays工具類的asList方法。 2. List轉數組&#xff0c;使用List的toArray方法。無參toArray方法返回 Object數組&#xff0c;傳入初始化長度的數組對象&#xff0c;返回該對象數組。 二、分析修改內容的影響…