您好,登錄后才能下訂單哦!
持久化原理:
? ? ? ?AOF<二進制文件>比RDB方式有更好的持久性。
? ? ? ?redis會將每一個收到的寫命令都通過write函數追加到文件最后,類似msyql的binlog。
? ? ? ?當redis重啟時,會通過重新執行文件中保存的寫命令來在內存中重建整個數據庫的內容。
? ? ? ? ?
優點:可以保持更高的數據完整性。
? ? ? ? ? ? 如果設置追加file的時間是1s,那么redis發生故障,最多會丟失1s的數據;
? ? ? ? ? ? 如果日志寫入不完整,支持redis-check-aof來進行日志修復;
? ? ? ? ? ? AOF文件沒被rewrite之前(文件過大時會對命令進行合并重寫),
? ? ? ? ? ? 可以刪除其中的某些命令(比如誤操作的flushall)。
缺點:AOF文件比RDB文件大,且恢復速度慢。?
? ?
? ?AOF默認關閉。
? ?
配置文件相關參數:
? ? ? ? ? ? appendonly yes
? ? ? ? ? ? appendfilename "" ? ? #AOF保存的文件名
? ? ? ? ? ??
同步方式相關的配置:
? ? ? ? ? ? appendfsync always ? ?#一旦插入命令,立即同步到磁盤,完全的持久化,但是速度慢,不推薦
? ? ? ? ? ? appendfsync everysec ? ? ? ?#AOF每秒進行同步
? ? ? ? ? ? appendfsync no ? ? ? ? #不自動同步,性能最好,但是持久化沒有保證
? ? ? ? ? ??
存儲過程:
? ? ? ? ?將快照內容以命令的形式追加到AOF文件中,
? ? ? ? ?所以隨著追加,AOF文件會越來越大,保存的AOF文件存儲了執行的所有命令,
? ? ? ? ?所以可以進行修改文件來撤銷輸錯的命令(在重寫之前,如果重寫了就沒有辦法了)?
? ? ? ? ?
對AOF文件進行重寫:(解決AOF文件越來越大的問題)
? ? ? ? ?redis-cli -h ip -p port bgrewriteaof
? ? ? ? ?
重寫命令的操作過程:
? ? ? ? ?在當前的快照保存結束后,開啟一個子進程,將AOF文件進行重寫,
? ? ? ? ?合并set命令等操作到一個臨時文件,達到縮小文件大小的目的。
? ? ? ? ?重寫結束后,將臨時文件替換為新的AOF文件。
? ? ? ? ?(重寫過程中如果有新的redis操作命令,會提交到緩存中,重寫結束后追加到AOF文件內)?
? ? ? ? ?
? ? ? ? ?說明:redis2.4以上版本,重寫機制自動觸發。觸發的相關redis.conf配置如下:
? ? ? ? ?auto-aof-rewrite-percentage 100
? ? ? ? ?當目前的AOF文件大小超過上一次重寫文件大小的百分之幾時進行重寫,
? ? ? ? ?如果沒有重啟過,則以啟動時的AOF文件大小為依據)
? ? ? ? ?auto-aof-rewrite-min-size 64mb(允許重寫的最小AOF文件大小);
? ? ? ? ?
數據恢復:
? ? ? ? 重啟redis服務,前提是配置文件必須設置了appendonly yes,然后會從appendfile的文件加載文件。
? ? ? ? 反之是從RDB中加載數據的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。