日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis RDB、AOF持久化详解

發(fā)布時間:2025/3/19 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis RDB、AOF持久化详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概述

Redis 提供了2種不同的持久化方式,分別為RDB和AOF

  • RDB能夠定時地對數(shù)據(jù)進(jìn)行快照存儲,因為是定時的,所以服務(wù)宕機(jī)時存在丟失數(shù)據(jù)的風(fēng)險
  • AOF能夠記錄每一次的寫操作,當(dāng)服務(wù)重啟的時候會重新執(zhí)行這些命令來恢復(fù)數(shù)據(jù),恢復(fù)完整度高,但是比較耗時
  • Redis服務(wù)啟動時,根據(jù)配置的持久化方式來決定加載RDB或者AOF恢復(fù)數(shù)據(jù)。如果2種持久化都開啟,則優(yōu)先加載AOF

RDB

RDB 相關(guān)配置

# save <seconds> <changes> # 在900秒內(nèi)保存1次、300秒內(nèi)保存10次、60秒內(nèi)保存10000次,這些條件符合其中一個就會觸發(fā)RDB快照保存 save 900 1 save 300 10 save 60 10000# RDB快照存儲失敗時,是否停止接收新的寫入操作 stop-writes-on-bgsave-error yes# 是否開啟RDS快照文件的壓縮存儲(不開啟會導(dǎo)致dump.rdb文件過大) rdbcompression yes# 對RDB格式進(jìn)行校驗,但是在加載或保存RDB文件時有10%的性能損耗 rdbchecksum yes# RDB快照文件名 dbfilename dump.rdb# 存放RDB、AOF文件的目錄 dir /usr/local/redis-5.0.8/data

RDB 詳解

  • 如果Redis服務(wù)是正常退出,會自動保存最新數(shù)據(jù)到rdb,然后再退出服務(wù)
  • 如果Redis服務(wù)是異常中斷,例如kill命令直接終止,則不會觸發(fā)RDB快照保存
  • 在保存RDB文件時,父進(jìn)程會fork出一個子進(jìn)程來處理,然后父進(jìn)程不需要再做其他IO操作。
  • 在恢復(fù)大的數(shù)據(jù)集時,RDB會比AOF更快

AOF

AOF 相關(guān)配置

# 是否開啟AOF持久化 appendonly no # AOF持久化文件名 appendfilename "appendonly.aof"# 持久化策略。 # always:每次寫入數(shù)據(jù)分別觸發(fā)持久化,并完成磁盤同步 # everysec:每秒持久化一次,并完成磁盤同步(推薦) # no:將數(shù)據(jù)交給操作系統(tǒng)處理,更快,也更不安全 appendfsync everysec# 當(dāng)AOF文件正在rewrite時,是否停止appendfsync操作 # no:不停止,也就是追加操作照常進(jìn)行 # yes:停止,不進(jìn)行追加操作,而只是將其放在緩沖區(qū) no-appendfsync-on-rewrite no# AOF文件增大一定的比例后(percentage),自動觸發(fā)重寫機(jī)制bgrewriteaof # 只有當(dāng)文件超過一定的大小(min-size),bgrewriteaof才會執(zhí)行,避免文件很小的時候一直反復(fù)的rewrite auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb

AOF 文件重寫機(jī)制

AOF的機(jī)制是不斷地將寫命令追加到文件末尾,隨著日積月累文件會變得越來越大,這時就需要一個重寫機(jī)制來處理。
例如:你對1個數(shù)值進(jìn)行INCR遞增100次,AOF記錄了100次INCR命令,實際上只需要1條SET命令就能保存最新的值了。
為了處理這種情況,AOF重寫機(jī)制(bgrewriteaof)會創(chuàng)建1個新的AOF文件,包含了重建當(dāng)前數(shù)據(jù)所需要的最少命令,創(chuàng)建完畢后直接替換掉原文件。

AOF 文件損壞處理

服務(wù)器宕機(jī)時可能導(dǎo)致AOF文件損壞,此時在Redis重啟時不會加載這個AOF文件。這種情況下,可以通過以下方式處理:

  • 復(fù)制一份當(dāng)前的AOF文件,作為備份
  • 使用Redis自帶的修復(fù)程序進(jìn)行處理:redis-check-aof -fix
  • (可選)使用 diff -u 對比修復(fù)后的 AOF 文件和原始 AOF 文件的備份,查看兩個文件之間的不同之處
  • 重啟Redis服務(wù),等待AOF文件加載以及數(shù)據(jù)恢復(fù)
  • RDB切換到AOF

    假設(shè)Redis當(dāng)前使用的是RDB,并且有了一定的數(shù)據(jù)量,這時候想啟用AOF時,應(yīng)該怎么操作呢?

    方法一

    直接修改redis.conf文件,把a(bǔ)ppendonly改成yes,然后重啟redis。

    注意:這時原數(shù)據(jù)將被全部清空
    注意:這時原數(shù)據(jù)將被全部清空
    注意:這時原數(shù)據(jù)將被全部清空

    方法二

    通過redis-cli連接redis,執(zhí)行命令進(jìn)行設(shè)置,這時將直接啟用aof,并將當(dāng)前的數(shù)據(jù)寫入到appendonly.aof文件。

    CONFIG SET appendonly yes

    注意:redis.conf記得同步設(shè)置appendonly yes,否則下次重啟aof不會啟用

    總結(jié)

    以上是生活随笔為你收集整理的Redis RDB、AOF持久化详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。