九. Redis 持久化-AOF(詳細講解說明,一個配置一個說明分析,步步講解到位 2)

九. Redis 持久化-AOF(詳細講解說明,一個配置一個說明分析,步步講解到位 2)

文章目錄

  • 九. Redis 持久化-AOF(詳細講解說明,一個配置一個說明分析,步步講解到位 2)
  • 1. Redis 持久化 AOF 概述
  • 2. AOF 持久化流程
  • 3. AOF 的配置
  • 4. AOF 啟動/修復/恢復
  • 5. Rewrite 壓縮
  • 6. AOF 持久化小結(優勢 & 劣勢)
  • 7. 選擇 RDB 還是 AOF ?
  • 8. 最后:


1. Redis 持久化 AOF 概述

Redis 持久化-AOF 官方文檔地址: https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/

?

AOF 是什么?

  1. AOF(Append Only File)
  2. 以日志的形式來記錄每個寫 操作(增量保存) ,將 Redis 執行過的所有寫指令記錄下來(比如 set/del 操作會記錄),讀操作 get 不記錄)
  3. 只許追加文件但不可以改寫文件
  4. Redis 啟動之初會讀取文件重新構建數據
  5. redis 重啟的話就根據日志文件的內容將寫指令從前到后執行一次,以完成對數據的恢復工作。

2. AOF 持久化流程

在這里插入圖片描述

上流程圖解讀:

  1. 客戶端的請求寫命令會被 append 追加到 AOF 緩沖區內
  2. AOF 緩沖區根據 AOF 持久化策略(always,everysec,no) 將操作 sync 同步到磁盤的 AOF 文件中
  3. AOF 文件大小超過重寫策略或手動重寫時,會對 AOF 文件 rewrite 重寫,壓縮 AOF 文件容量
  4. Redis 服務重啟時,會重新 load 加載 AOF 文件中的寫操作達到數據恢復的目的。

3. AOF 的配置

關于 AOF 的配置和 RDB 的配置都是一樣的,都是在 /etc/redis.conf 文件當中配置的。

在 redis.conf 中配置文件名稱,默認為 appendonly.aof 文件,作為備份快照文件的。

在這里插入圖片描述

設置為 no 將 AOF 持久化開啟。

appendonly yes

在這里插入圖片描述

需要將 Redis 服務器關閉,再重新啟動 Redis 服務器,配置才會生效。

[root@localhost ~]# redis-server /etc/redis.conf
[root@localhost ~]# redis-cli

重點:

  • AOF 文件的保存路徑,同 RDB 的路徑是一致的配置,都是存儲到同一個地方的。RDB 配置的路徑是在哪里 ,AOF 配置的路徑也就是在哪里。
  • AOF 和 RDB 同時開啟,系統默認取 AOF 的數據 。當開啟 AOF 后,Redis 從 AOF 文件取數據。

在這里插入圖片描述

AOF 演示:

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

**AOF ** 只對 set[添加/修改] 和 del 操作記錄下來了。

get[讀]操作,并沒有記錄下來。

4. AOF 啟動/修復/恢復

基本說明:

AOF 的備份機制和性能雖然和 RDB 不同,但是備份和恢復的操作同 RDB 一樣,都是拷貝備份文件,需要恢復時再拷貝到 Redis 工作目錄下,啟動系統即加載。

正常恢復:

  1. 修改默認的 appendonly no ,改為 yes
  2. 將有數據的 aof 文件定時備份,需要恢復時,復制一份保存到對應目錄(查看目錄: config get dir )
  3. 恢復:重啟 Redis 然后重新加載。
  4. 這里就演示了,和前面的 RDB 備份/恢復是一樣的,大家可以移步至🌟🌟🌟

在這里插入圖片描述

[root@localhost ~]# cp appendonly.aof appendonly.aof.bak # 復制拷貝

異常恢復:

  1. 如遇到 AOF 文件損壞,通過/usr/local/bin/redis-check-aof --fix appendonly.aof 進行恢復
  2. 建議先: 備份被寫壞的 AOF 文件
  3. 恢復:重啟 redis,然后重新加載

演示異常恢復:

這里我們將 appendonly.aof 文件進行一個刻意的修改,造成數據的異常。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

[root@localhost ~]# redis-check-aof --fix /root/appendonly.aof # 修復文件(已經是在root 目錄下了)
[root@localhost ~]# ./redis-check-aof --fix appendonly.aof # 修復文件(已經是在root 目錄下了,所以不用使用 /root 指定位置)

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

同步頻率設置:

配置位置:

在這里插入圖片描述

appendfsync everysec 配置說明:

  1. appendfsync always 始終同步,每次 Redis 的寫入都會立刻計入日志;性能較差但數據完整性比較好。
  2. appendfsync everysec 每秒同步,每秒記入日志一次,如果宕機,本秒的數據可能會丟失。
  3. appendfsync no 表示 Redis 不主動進行同步,把同步時機交給操作系統。更多詳細內容https://baijiahao.baidu.com/s?id=1740774723808931509&wfr=spider&for=pc

5. Rewrite 壓縮

  1. AOF 文件越來越大,需要定期對 AOF 文件進行重寫達到壓縮。
  2. 舊的 AOF 文件含有無效命令被忽略,保留最新的數據命令,比如 :set a a1;set a b1;set a c1; 保留最后一條指令就可以了。
  3. 多條寫命令可以合并為一個,比如 : set a c1 b b1 c c1
  4. AOF 重寫降低了文件占用空間
  5. 更小的 AOF 文件可以更快的被 Redis 加載。

重寫觸發配置:

  1. 手動觸發:

直接調用 bgrewriteaof 命令:

127.0.0.1:6379> bgrewriteaof

在這里插入圖片描述

  1. 自動觸發:

在這里插入圖片描述

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

auto-aof-rewrite-min-size : AOF 文件最小重寫大小,只有當 AOF 文件大小大于 該值的時候才能重寫,默認配置 64MB。

auto-aof-rewrite-percentage :當前 AOF 文件大小和最后一次重寫的大小之間的比率等于或者大于指定的增長百分比,比如 100 代表當前 AOF 文件時上次重寫的兩倍時候才重寫。

注意:

  • 系統載入時或者上次重寫完畢時,Redis 會記錄此時 AOF 大小,設為 base_size
  • 如果 Redis 的AOF當前大小 >= base_size+base_size * 100%(默認) 當前大小 >= 64mb(默認) 的情況下,Redis 會對 AOF 進行重寫。

6. AOF 持久化小結(優勢 & 劣勢)

優勢:

  1. 備份機制更穩健,丟失數據概率更低。
  2. 可讀的日志文本,通過操作 AOF 穩健,可以處理誤操作

在這里插入圖片描述

劣勢:

  1. 比起 RDB 占用更多的磁盤空間(會記錄數據和指令)
  2. 恢復備份速度比 RDB 更慢(因為每次恢復數據是重新執行我們備份在appendonly.aof 文件當中的指令,而 RDB 是存儲了數據,直接拿出來,所以比 RDB 更慢一些)。
  3. 每次讀寫都同步的話,有一定的性能壓力。

7. 選擇 RDB 還是 AOF ?

選擇 RDB 還是 AOF,官方文檔說明: https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/
在這里插入圖片描述

  • 官方推薦兩個都啟用
  • 如果只做緩存:如果你只希望你的數據在服務器運行的時候存在, 你也可以不使用任何持久化方式

8. 最后:

“在這個最后的篇章中,我要表達我對每一位讀者的感激之情。你們的關注和回復是我創作的動力源泉,我從你們身上吸取了無盡的靈感與勇氣。我會將你們的鼓勵留在心底,繼續在其他的領域奮斗。感謝你們,我們總會在某個時刻再次相遇。”

在這里插入圖片描述

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

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

相關文章

C++11新特性之long long超長整形

1.介紹 long long 超長整形是C11標準新添加的,用于表示更大范圍整數的類型。 2.用法 占用空間:至少64位(8個字節)。 對于有符號long long 整形,后綴用“LL”或“II”標識。例如,“10LL”就表示有符號超長整…

瀏覽器查詢所有的存儲信息,以及清除的語法

要在瀏覽器的控制臺中查看所有的存儲(例如 localStorage、sessionStorage 和 cookies),你可以使用瀏覽器開發者工具的 "Application" 標簽頁。以下是操作步驟: 1. 打開開發者工具 在 Chrome 或 Edge 瀏覽器中&#xf…

基于Springboot框架的學術期刊遴選服務-項目演示

項目介紹 本課程演示的是一款 基于Javaweb的水果超市管理系統,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系統 3.該項目附…

新版231普通阿里滑塊 自動化和逆向實現 分析

聲明: 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 逆向過程 補環境逆向 部分補環境 …

java-(Oracle)-Oracle,plsqldev,Sql語法,Oracle函數

卸載好注冊表,然后安裝11g 每次在執行orderby的時候相當于是做了全排序,思考全排序的效率 會比較耗費系統的資源,因此選擇在業務不太繁忙的時候進行 --給表添加注釋 comment on table emp is 雇員表 --給列添加注釋; comment on column emp.empno is 雇員工號;select empno,en…

泰山派Linux環境下自動燒錄腳本(EMMC 2+16G)

腳本名字: download.sh 輸入./download -h獲取幫助信息 ,其中各個IMG/TXT燒錄的地址和路徑都在前幾行修改即可 #!/bin/bash# # DownLoad.sh 多鏡像燒錄腳本 # 版本:1.1 # 作者:zhangqi # 功能:通過參數選擇燒錄指定鏡…

正大杯攻略|分層抽樣+不等概率三階段抽樣

首先,先進行分層抽樣,確定主城區和郊區的比例 然后對主城區分別進行不等概率三階段抽樣 第一階段,使用PPS抽樣,確定行政區(根據分層抽樣比例合理確定主城區和郊區行政區數量) 第二階段,使用分…

開源智慧園區管理系統對比其他十種管理軟件的優勢與應用前景分析

內容概要 在當今數字化快速發展的時代,園區管理軟件的選擇顯得尤為重要。而開源智慧園區管理系統憑借其獨特的優勢,逐漸成為用戶的新寵。與傳統管理軟件相比,它不僅靈活性高,而且具有更強的可定制性,讓各類園區&#…

計算機網絡 應用層 筆記1(C/S模型,P2P模型,FTP協議)

應用層概述: 功能: 常見協議 應用層與其他層的關系 網絡應用模型 C/S模型: 優點 缺點 P2P模型: 優點 缺點 DNS系統: 基本功能 系統架構 域名空間: DNS 服務器 根服務器: 頂級域…

人類心智逆向工程:AGI的認知科學基礎

文章目錄 引言:為何需要逆向工程人類心智?一、逆向工程的定義與目標1.1 什么是逆向工程?1.2 AGI逆向工程的核心目標二、認知科學的四大支柱與AGI2.1 神經科學:大腦的硬件解剖2.2 心理學:心智的行為建模2.3 語言學:符號與意義的橋梁2.4 哲學:意識與自我模型的爭議三、逆向…

游戲引擎學習第86天

倉庫: https://gitee.com/mrxiao_com/2d_game_2 回顧 繼續之前的工作。 昨天已經讓地形系統基本運行起來,但目前仍然需要進一步完善,使其能夠生成更多的地塊。目前的情況是,僅僅有一個地塊位于中心區域,而真正需要的是讓地塊覆蓋…

Python在線編輯器

from flask import Flask, render_template, request, jsonify import sys from io import StringIO import contextlib import subprocess import importlib import threading import time import ast import reapp Flask(__name__)RESTRICTED_PACKAGES {tkinter: 抱歉&…

力扣動態規劃-20【算法學習day.114】

前言 ###我做這類文章一個重要的目的還是記錄自己的學習過程,我的解析也不會做的非常詳細,只會提供思路和一些關鍵點,力扣上的大佬們的題解質量是非常非常高滴!!! 習題 1.網格中的最小路徑代價 題目鏈接…

關于算盡圓周率

總有人提到圓周率算盡的問題,其實代碼都已經在前面給出了,自己跑一下就明白了。 用語言描述的話,那就是: 前面幾篇文章已經寫清楚了,圓周率的本質就是無限分辨率前提下的可二分度量單位。 就像是自然對數底&#xf…

從通訊工具到 AI 助理,AI手機如何發展?

隨著AI進軍各行各業,全面AI化時代已經到來。手機,作為現代人類的“數字器官”之一,更是首當其沖地融入了這一變革浪潮之中。 2024年年初,OPPO聯合IDC發布了《AI手機白皮書》,公布OPPO已邁向AI手機這一全新階段。到如今…

游戲引擎 Unity - Unity 打開項目、Unity Editor 添加簡體中文語言包模塊、Unity 項目設置為簡體中文

Unity Unity 首次發布于 2005 年,屬于 Unity Technologies Unity 使用的開發技術有:C# Unity 的適用平臺:PC、主機、移動設備、VR / AR、Web 等 Unity 的適用領域:開發中等畫質中小型項目 Unity 適合初學者或需要快速上手的開…

C# 接口介紹

.NET學習資料 .NET學習資料 .NET學習資料 一、接口的定義 在 C# 中,接口是一種特殊的抽象類型,它定義了一組方法簽名,但不包含方法的實現。接口使用interface關鍵字來聲明。例如,定義一個表示形狀的接口IShape: in…

Qt常用控件 多元素控件

文章目錄 1. QListWidget1.1 常用屬性和方法1.2 常用信號1.4 例子1,操作元素 2. QTableWidget2.1 常用屬性和方法2.2 常用信號2.3 例子1,創建表格3.1 常用屬性和方法3.2 常用信號3.3 例子1,創建樹形結構 Qt中提供的多元素控件有: QListWidget…

2. 動態測試

一、動態測試是什么? 動態測試(Dynamic Test)允許在運行時生成測試用例,而不是在編譯時通過 Test 靜態定義。它通過 TestFactory 注解標記的方法動態生成一組測試用例,適用于需要靈活生成測試場景的場景。 核心特點&…

33.Word:國家中長期人才發展規劃綱要【33】

目錄 NO1.2樣式? NO3? 圖表 ? NO4.5.6? 開始→段落標記視圖→導航窗格→檢查有無遺漏 NO1.2樣式 F12/另存為:Word.docx:考生文件夾樣式的復制樣式的修改 樣式的應用(沒有相似/超級多的情況下)——替換 [ ]通配符&#x…