Redis持久化

一、實現(xiàn)方式:

實現(xiàn)方式有2種:分別是 RDB文件 和 AOF文件
  1. RDB文件(存儲數據)
    指定就是數據庫目錄下的 dump.rdb 文件
    redis運行服務后,會根據配置文件的設置的存盤頻率 把內存里的數據復制到數據庫目錄下的dump.rdb文件里(覆蓋保存)
  2. AOF文件(存儲命令)
    redis服務AOF文件(與mysql服務的binlog日志文件的功能相同)
    是一個文件,記錄連接redis服務后執(zhí)行的寫操作命令并且是以追加的方式記錄寫操作命令
    默認沒有開啟,使用需要人為啟用。

二、RDB文件的使用

  • 查看 redis服務存儲數據到硬盤的存盤頻率
vim /etc/redis/6379.conf (默認 219行 220行 221行)    
# 以下的值可以根據需求進行修改  
# save  秒    變量的個數
save    900   1             # 每15分鐘有1個變量改變則存盤
save    300   10            # 每5分鐘有10個變量改變則存盤
save    60    10000         # 每1分鐘有10000個變量改變則存盤
  • 使用RDB文件還可以實現(xiàn)數據的備份和恢復
# 拷貝 dump.rdb 文件就是對數據的備份
[root@host56 ~]# cp /var/lib/redis/6379/dump.rdb  /opt/
[root@host56 ~]# ls /opt/*.rdb
/opt/dump.rdb

# 模擬數據丟失
192.168.88.56:6379> FLUSHALL 
OK
192.168.88.56:6379> keys *
(empty list or set)

# 把備份的dump.rdb文件再次拷貝回數據庫目錄就是恢復
# 停止內存沒有數據的redis服務
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379  shutdown
# 把沒有數據的dump.rdb文件刪除
[root@host56 ~]# rm -rf /var/lib/redis/6379/dump.rdb 
# 把備份dump.rdb文件拷貝到數據庫目錄下
[root@host56 ~]# cp /opt/dump.rdb  /var/lib/redis/6379/
# 啟動redis服務 并連接服務查看數據
[root@host56 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379
192.168.88.56:6379> keys *
 1) "i"
 2) "d"
 3) "x"
  • RDB方式的優(yōu)缺點:
優(yōu)缺點 說明
優(yōu)點 高性能的持久化實現(xiàn) —— 創(chuàng)建一個子進程來執(zhí)行持久化
先將數據寫入臨時文件,持久化過程結束后,
再用這個臨時文件替換上次持久化好的文件
過程中主進程不做任何IO操作
比較適合大規(guī)模數據恢復
且對數據完整性要求不是非常高的場合
缺點 意外宕機時,丟失最后一次持久化的所有數據

三、AOF文件的使用:

  • 實現(xiàn)數據的備份和恢復
# 備份aof文件
[root@host56 ~]# cp /var/lib/redis/6379/appendonly.aof  /opt/
[root@host56 ~]# ls /opt/*.aof
/opt/appendonly.aof

# 模擬數據丟失
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379
192.168.88.56:6379> flushall 
192.168.88.56:6379> exit

# 恢復數據
# 把沒有數據的服務停止
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379  shutdown
# 刪除沒有數據的aof文件和rdb文件
[root@host56 ~]# rm -rf  /var/lib/redis/6379/*
# 把備份的aof文件拷貝到數據庫目錄
[root@host56 ~]# cp /opt/appendonly.aof  /var/lib/redis/6379/
# 啟動redis服務并查看數據
[root@host56 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379  
192.168.88.56:6379> keys *
1) "v4"
2) "v3"
  • 修復有問題的aof文件
[root@host56 ~]# redis-check-aof --fix /var/lib/redis/6379/appendonly.aof 
0x 78: Expected prefix '*', got: 'd'
AOF analyzed: size=126, ok_up_to=120, diff=6
This will shrink the AOF from 126 bytes, with 6 bytes, to 120 bytes
Continue? [y/N]: y  同意修復     
Successfully truncated AOF
  • 與aof 相關的配置項 ( vim /etc/redis/6379.conf )
參數 說明
appendfsync always** 時時記錄,并完成磁盤同步
安全性較高,內存消耗過大
appendfsync everysec 每秒記錄一次,并完成磁盤同步
推薦策略
appendfsync no 寫入aof ,不執(zhí)行磁盤同步
  • AOF文件的優(yōu)缺點:
優(yōu)缺點 說明
優(yōu)點 可以靈活設置持久化方式
出現(xiàn)意外宕機時,僅可能丟失1秒的數據
缺點 持久化文件的體積通常會大于RDB方式
執(zhí)行fsync策略時的速度可比RDB方式慢
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • RDB(Snapshotting)(快照)持久化和AOF(Append Only File)持久化 1.RDB(S...
    John_Phil閱讀 2,031評論 0 2
  • 一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在w...
    Java架構_師閱讀 481評論 0 2
  • 前言 在上一篇文章中,介紹了Redis內存模型,從這篇文章開始,將依次介紹Redis高可用相關的知識——持久化、復...
    Java架構閱讀 2,505評論 3 21
  • 一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在w...
    胸毛飄逸閱讀 318評論 0 2
  • 一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在w...
    空語閱讀 1,683評論 0 2

友情鏈接更多精彩內容