深入Redis過程-持久化

目錄

redis實現持久化

RDB

觸發機制-定期方法

定期-手動觸發

save

bgsave

定期-自動觸發

AOF

開啟AOF功能

刷新緩沖區策略

重寫機制

混合持久化

Redis事務

事務相關的命令

MULTI

EXEC

DISCARD

WATCH


redis實現持久化

RDB

RDB叫做Redis數據備份文件,也被叫做Redis數據快照。簡單來說就是把內存中的所有數據都記錄到磁盤中。當Redis實例故障重啟后,從磁盤讀取快照文件,恢復數據。快照文件稱為RDB文件,默認是保存在當前運行目錄

觸發機制-定期方法

定期-手動觸發

通過redis客戶端,執行特定的命令,來觸發快照生成

save

執行save的時候,redis就會全力以赴的執行“快照生成”操作,此時就會阻塞redis的其他客戶端的命令(一般不建議使用save)

bgsave

運作流程:

1.執行bgsave命令, Redis 父進程判斷當前進是否存在其他正在執行的子進程,如RDB/AOF子進星,如果存在bgsave命令直接返回。
2.父進程執行fork創建子進程,fork 過程中父進程會阻塞,通過info stats命令查看latest_fork_usec 選項,可以獲取最近一次fork操作的耗時,單位為微秒。
3.父進程fork完成后,bgsave命令返回"Background saving started"信息并不再阻塞父進程,可以繼續響應其他命令。
4.子進程創建RDB文件,根據父進程內存生成臨時快照文件。完成后對原有文件進行原子替換。執行lastsave命令可以獲取最后-次生成RDB的時間,對應info統計的rdb_ last_save_time選項。
5.進程發送信號給父進程表示完成,父進程更新統計信息。

定期-自動觸發

在redis配置文件中,設置一下,讓redis,每隔多長時間/沒產生多少次修改就觸發

RDB問題:不能實時的持久化保存數據,在兩次生成快照之間,實時的數據可能會隨著重啟而丟失

AOF

類似于mysql的binblog,就會把用戶的每個操作,都記錄到文件中。當redis重新啟動的時候,就會讀取這個aof文件中的內容,用來恢復數據。

開啟AOF功能

默認此功能是關閉的,修改配置文件來開啟aof功能

刷新緩沖區策略

1、AOF 機制并非是直接讓工作線程把數據寫入硬盤,而是先寫入一個內存中的緩沖區,積累到一定數量的時候,再統一寫入硬盤;

2、AOF 每次是把新的操作命令順序寫入原有文件的末尾,輸入順序寫入,這樣的方式相比于隨機訪問的速度要快很多的

redis 給出了一些選項,讓我們可以根據實際情況來決定怎么取舍——緩沖區刷新策略:

1、always 每操作一次就保存一次:頻率是最高的,數據可靠性最高,性能最低.

2、everysec 每秒保存一次:頻率低一些,數據可靠性降低,性能會提高.

3、?no 跟隨系統的同步策略:頻率最低,數據可靠性最低,性能是最高的.

重寫機制

此機制能夠針對aof文件進行整理操作,這個整理就是能夠剔除其中的冗余操作,并且合并一些操作,達到給aof文件瘦身的效果

Redis也會在觸發閾值時自動去重寫AO文件,閾值也可以在redis.conf中配置:

流程

混合持久化

結合了rdb和aof的特點,按照aof的方式,每一個請求/操作,都記錄入文件,在觸發aof重寫后,就會把當前內存的狀態按照rdb的二進制格式寫入到新的aof文件中,后續再進行的操作,仍然是按照aof文本的方式追加到文件后面

Redis事務

本質上是在服務器上搞了一個“事務隊列”,每次客戶端在事務中進行了一個操作,都會把命令先發給服務器,放到“事務隊列”中(但是并不會立即執行),而是會在真正收到EXEC命令之后,才真正執行隊列中的所有操作

redis事務和mysql事務的區別:

弱化的原子性:redis沒有“回滾機制”,只能做到這些操作“批量執行”,不能做到“一個失敗就恢復到初始狀態”;

不保證一致性:不涉及“約束”,也沒有回滾。MySQL的一致性體現的是運行事務前和運行后,結果都是合理有效的,不會出現中間非法狀態;

不需要隔離性:也沒有隔離級別,因為不會并發執行事務(redis單線程處理請求);

不需要持久性:是保存在內存的,是否開啟持久化,是redis-server自己的事情,和事務無關

事務相關的命令

MULTI

開啟事務

EXEC

執行事務

DISCARD

放棄當前事務

WATCH

監控某個key是否在事務執行之前,發生了改變

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

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

相關文章

強大的公式編輯器 —— MathType最新版本安裝與使用

強大的公式編輯器 —— MathType最新版本安裝與使用 由于使用了很長時間的機械硬盤出現壞道,安裝在其中的MathType6.9(精簡版)也沒辦法使用了,本來想安裝個高版本的MathType,比如MathType7.4,但在網上苦苦…

如何更改Jupyter Notebook中的環境?

1.首先,打開終端 2.接著,分別輸入以下命令 conda env list 把EXPose替換為自己的環境變量 conda activate EXPose 3.接下來安裝‘ ipykernel ’軟件包 conda install ipykernel 4. 將該環境添加到Jupyter Notebook中;在Jupyter Notebook…

HTB Surveillance

Surveillance 2023年12月10日 12:13:35User nmap Starting Nmap 7.80 ( https://nmap.org ) at 2023-12-10 12:15 CST Stats: 0:00:37 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan Connect Scan Timing: About 59.83% done

小白第一次開私服怎么吸引玩家

大家好,我是咕嚕-凱撒,在現在這個網絡社會很多人為了放松一下會選擇打打游戲,私服也就成為了許多玩家為了尋找新鮮體驗的熱門選擇,很多小白就發現了這個契機但是吸引玩家加入自己的服務器也就成了一個比較頭疼的問題,下…

Wrong number of values of control parameter 2(Halcon 錯誤代碼:1402)

threshold (ImageReduced1, Region, 0,min2(75,Min)) 程序運行到這一句,出現錯誤 原因是其中的參數Min為空數組 解決方案:判斷了下可以輸出Min的區域是否存在,不存在跳過這一步。

八叉樹bt文件轉為grid文件的代碼及編譯流程

目的 點云文件轉為八叉樹文件 代碼 在一個文件夾中新建兩個文件&#xff0c;pcd2bt.cpp和CMakeLists.txt&#xff0c;分別寫入&#xff1a; grid3d_node.cpp #include <ros/ros.h> #include <string> #include "grid3d.hpp"int main(int argc, char…

【Maven技術專題】「實戰開發系列」盤點Maven項目中打包需要注意到的那點事兒

Maven項目打包需要注意到的那點事兒 Maven是什么Maven打包插件的作用Maven打包后經常出現的問題maven構建可運行Jar包 Maven打包的三種方式Maven打包的最簡單的方法maven-jar-pluginMANIFEST.MF文件部分MANIFEST.MF的文件內容jar包的拷貝機制在pom.xml中配置 maven-jar-plugin的…

mybatis多表映射-分步查詢

1、建庫建表 create database mybatis-example; use mybatis-example; create table t_book (bid varchar(20) primary key,bname varchar(20),stuid varchar(20) ); insert into t_book values(b001,Java,s001); insert into t_book values(b002,Python,s002); insert into …

C++大型項目經驗

1 附加包含目錄 在Visual Studio中&#xff0c;“附加包含目錄”&#xff08;Additional Include Directories&#xff09;是一個編譯器設置&#xff0c;它指示編譯器在查找包含文件&#xff08;通常是頭文件&#xff0c;擴展名為.h或.hpp&#xff09;時去哪些額外的文件夾路徑…

函數的棧幀

我們每次在調用函數的時候&#xff0c;都說會進行傳參。每次創建函數&#xff0c;或者進行遞歸的時候&#xff0c;也會說會進行壓棧。 那么&#xff0c;今天我們就來具體看看函數到底是如何進行壓棧&#xff0c;傳參的操作。 什么是棧&#xff1f; 首先我們要知道&#xff0c;…

Error opening file for writing報錯解決

報錯展示及描述 在安裝pycharm的時候出現了一下報錯&#xff0c; Error opening file for writing。 報錯原因 一般出現這種報錯都是文件權限的原因&#xff0c;檢查一下&#xff0c;果然這個文件夾權限是【只讀】 查看文件權限的方式&#xff1a;【右擊】文件夾名稱&#xff0…

CSS結構偽類選擇器之否定偽類:not()

結構偽類選擇器是針對 HTML 層級結構的偽類選擇器。 常用的結構化偽類選擇器有&#xff1a; :root選擇器、:not選擇器、:only-child選擇器、:first-child選擇器、:last-child選擇器、 :nth-child選擇器、:nth-child(n)選擇器、:nth-last-child(n)選擇器、:nth-of-type(n)選擇…

046:vue通過axios調用json地址數據的方法

第046個 查看專欄目錄: VUE ------ element UI 專欄目標 在vue和element UI聯合技術棧的操控下&#xff0c;本專欄提供行之有效的源代碼示例和信息點介紹&#xff0c;做到靈活運用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安裝、引用&#xff0c;模板使…

Userwindows pc電腦生成一個電腦唯一機器碼

在Windows PC上生成一個唯一標識碼通常涉及到計算機硬件和軟件的信息。有一些常見的方式可以獲取到一個較為唯一的標識碼&#xff1a; 1. 硬件信息&#xff1a; 可以通過獲取計算機的硬件信息來生成一個唯一標識碼。這可能包括CPU序列號、硬盤序列號、網卡MAC地址等。但請注意…

ffmpeg過濾器filter理論與實戰

文章目錄 前言一、DirectShow1、簡介2、程序基本結構3、架構 二、過濾器1、視頻過濾器 -vf2、音頻過濾器 -af3、過濾器鏈&#xff08;Filterchain&#xff09;4、過濾器圖&#xff08;Filtergraph&#xff09;①、基本語法②、Filtergraph 的分類 5、結構體間的關系圖 三、過濾…

Vue項目中WebSocket封裝

WEBSOCKET 封裝引入初始化使用 封裝 utils下建立WebSocketManager.js class WebSocketManager {constructor() {this.url null;this.websocket null;this.isConnected false;this.listeners {onopen: [],onmessage: [],onclose: [],onerror: [],};this.reconnectionOptio…

QML如何與C++層進行信號槽通訊

//QML端為槽函數 //其中serial為C類的對象 //CSerial serial(暫且可以這么理解) QML&#xff1a; Connections{ target: serial onStringReceived:{ console.log("receive:"receiveString) } } //C端為信號 //C //C類…

kafka 常用命令【學習筆記】

Kafka 環境變量配置 export KAFKA_HOME/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/kafka export PATH P A T H : PATH: PATH:KAFKA_HOME/bin 查看主題 ./kafka-topics.sh --list --zookeeper localhost:2181 創建主題 ./kafka-topics.sh --create --zook…

保研畢業論文查重率多少通過【保姆教程】

大家好&#xff0c;今天來聊聊保研畢業論文查重率多少通過&#xff0c;希望能給大家提供一點參考。 以下是針對論文重復率高的情況&#xff0c;提供一些修改建議和技巧&#xff1a; 保研畢業論文查重率多少通過 在保研過程中&#xff0c;畢業論文的查重率是衡量學術誠信和論文…

JAVA8新特性之函數式編程詳解

JAVA8新特性之函數式編程詳解 前言一、初步了解函數式接口二、 Lambda表達式2.1 概述2.2 lambda省略規則2.3 lambda省略常見實例2.4 lambda表達式與函數式接口 三、 Stream流3.1 stream流的定義3.2 Stream流的特點3.3 Stream流的三個步驟3.4 Stream 和 Collection 集合的區別&a…