您好,登錄后才能下訂單哦!
?
?
?
Redis持久化
■持久化概述
●Redis是運行在內存中,內存中的數據斷電丟失
●為了能夠重用Redis數據,或者防止系統故障,我們需要將Redis
中的數據寫入到磁盤空間中,即持久化
■持久化分類
重點
● RDB方式:創建快照的方式獲取某一時刻Redis中所有 數據的副本
●AOF方式:將執行的寫命令寫到文件的末尾,以日志的方式來記
錄數據的變化
RDB:占用資源少,不需花費大量服務器資源
AOF:專門開一個進程,隨時進行數據保存,讀寫同步進行,——類似增量備份,但是占用更大資源,重啟服務時,要進行同步數據,啟動時間慢,等待時間長。服務器突然關機,不怕數據丟失。不執行最后一條語句
RDB持久化2-1
■Redis的默認持久化方式
■默認文件名dump.rdb
■觸發條件
●在指定的時間間隔內,執行指定次數的寫操作(配置文件控制)
●執行save或者是bgsave (異步) 命令
●執行flushall命令,清空數據庫所有數據
●執行shutdown命令,保證服務器正常關閉且不丟失任何數據
■Redis的默認持久化方式
■默認文件名dump.rdb
■觸發條件
,在指定的時間間隔內,執行指定次數的寫操作(配置文件控制)
●執行save或者是bgsave(異步) 命令
執行flushall命令,清空數據庫所有數據
●執行shutdown命令,保證服務器正常關閉且不丟失任何數據
shutdown save最安全的數據保存方式
●適合大規模的數據恢復
●如果業務對數據完整性和一致性要求不高,RDB是很好的選擇
●數據的完整性和一致性不高
●備份時占用內存
RDB啟動方式:
save指令 ?手動執行一次拍照
●dbfilename dump.rdb
說明:設置本地數據庫文件名,默認值為dump.rdb
經驗:通常設置為dump-端口號.rdb
●dir
說明:設置存儲.rdb文件的路徑
經驗:通常設置成存儲空間較大的目錄中,目錄名稱data
●rdbcompressionyes
說明:設置存儲至本地數據庫時是否壓縮數據,默認為yes,采用LZF壓縮
經驗:通常默認為開啟狀態,如果設置為no,可以節省CPU運行時間,但會使存儲的文件變大(巨大)
●rdbchecksum yes
說明:設置是否進行RDB文件格式校驗,該校驗過程在寫文件和讀文件過程均進行
經驗:通常默認為開啟狀態,如果設置為no,可以節約讀寫性過程約10%時間消耗,但是存儲一定的數據損壞風險
save ? ? ? ?按順序保存,容易阻塞服務器
bgsave ? ? 手動啟動后臺保存操作,但是不是立即執行
注意: bgsave命令 是針對save阻塞問題做的優化。Redis內部所有涉及到RDB操作都采用bgsave的方式,save命令可以放棄使用。
save second changes
作用: 滿足限定時間范圍內key的變化達到指定數量進行持久化
參數 second: 監控時間范圍 changes:監控key的變化量
●全量復制
在主從復制中詳細講解
●服務器運行過程中重啟
debug reload
●關閉服務器時指定保存數據
shutdowm save
AOF數據持久化
■Redis默認不開啟
■彌補RDB的不足(數據的不一致性)
■采用日志的形式來記錄每個寫操作,并追加到文件中
■Redis重啟會根據日志文件的內容將寫指令從前到后執
行一次以完成數據的恢復工作
■AOF的重寫機制
●AOF的工作原理是將寫操作追加到文件中,文件的冗余內容會越
來越多
●當AOF文件的大小超過所設定的閾值時,Redis就會對AOF文件
的內容壓縮
■AOF重寫的原理
●Redis會fork出一條新進程,讀取內存中的數據(并沒有讀取舊
文件),并重新寫到-一個臨時文件中,最后替換舊的aof文件
AOF重寫
隨著命令不斷寫入AOF,文件會越來越大,為了解決這個問題,Redis引入了 AOF重寫機制壓縮文件體積。AOF文件重
寫是將Redis進程內的數據轉化為寫命令同步到新AOF文件的過程。簡單說就是將對同一一個數據的若干個條命令執行結
果轉化成最終結果數據對應的指令進行記錄。
AOF重寫作用
●降低磁盤占用量,提高磁盤利用率
●提高持久化效率,降低持久化寫時間,提高IO性能
●降低數據恢復用時,提高數據恢復效率
■AOF的重寫配置
vim /etc/redis/6379.conf
#在日志進行BGREWRITEAOF時,如果設置為yes表示新寫操作不進行同步fsync,只是
暫存在緩沖區里,避免造成磁盤I0操作沖突,等重寫完成后在寫入。redis中默認為no
no-appendfsync-on-rewrite no
#當前AOF文件大小是上次日志重寫時AOF文件大小兩倍時,發生BGREWRITEAOF操作
auto-aof-rewrite-percentage 100
#當前AOF文件執行BGREWRITEAOF命令的最小值,避免剛開始啟動Reids時由于文件尺
寸較小導致頻繁的BGREWRITEAOF
auto-aof-rewrite-min-size 64mb
# appendfsync always ? ?每次寫入操作均同步AOF
appendtsync everysec ? ? 每秒在系統宕機情況下1秒鐘的數據
# appendfsync no ? ? ? ? ? 系統控制
aof-load-truncated yes
#在日志進行BGREWRITEAOF時,如果設置為yes表示新寫操作不進行同步fsync,只是
暫存在緩沖區里,避免造成磁盤I0操作沖突,等重寫完成后在寫入。redis中默認為no
no-appendfsync-on-rewrite no ? ?默認是no
#當前AOF文件大小是上次日志重寫時AOF文件大小兩倍時,發生BGREWRITEAOF操作
auto-aof-rewrite-percentage 100
#當前AOF文件執行BGREWRITEAOF命令的最小值,避免剛開始啟動Reids時由于文件尺
寸較小導致頻繁的BGREWRITEAOF
auto-aof-rewrite -min-size 64mb
AOF重寫方式
●手動重寫
bgrewriteaof
●自動重寫
auto-aof- rewrite-min-size size
auto-aof-rewrite-percentage percentage
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。