您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Redis持久化RDB和AOF的區別有什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
RDB是Redis內存到硬盤的快照,用于redis持久化,創建RDB二進制文件,將存儲在內存中的數據,持久化的放到硬盤中,當我們需要這些數據的時候,啟動載入RDB文件,數據將會被存入內存中,其實RDB就是一種快照的方式持久化存儲數據,也可以作為一種復制媒介,這個我們后面在談。
RDB
觸發機制--主要三種方式
Save同步命令
save
文件策略:生成一個臨時文件,如果存在老的文件,將會替換舊文件
bgsave 異步命令
主進程通過fork()函數,創建子進程生成DRB文件,在此期間訪問redis仍然能正常響應
命令 | save | bgsave |
IO | 同步 | 異步 |
阻塞 | 阻塞 | 阻塞(操作不當fork阻塞) |
優點 | 不額外占用內存 | 不阻塞客戶端命令 |
缺點 | 阻塞客戶端命令 | 需要fork,額外消耗內存 |
redis自動生成RDB文件(不可控)
save 900 1 #900秒 改了一次就自動生成RDB文件
save 300 10 #300秒修改了10次就自動生成RDB文件
redis save配置推薦
#關閉自動保存配置#save 900 1 #900秒 改了一次就自動生成RDB文件#save 300 10 #300秒修改了10次就自動生成RDB文件 dbfilename dump-${port}.rdb #rdb文件名 dir /bigdiskpath #分盤,rdb文件保存位置 stop-writes-on-bgsave-error yes #bdsave出錯,停止寫入 rdbcompression yes #采用壓縮位置 rdbchecksum yes #開啟校驗和
不容忽視的觸發機制
有時候我們沒有執行save bgsave命令,也沒有開啟自動保存命令,還是會生成RDB,可能是因為以下原因:
AOF
RDB存在的問題:耗時耗性能,阻塞丟失數據
AOF運行原理:每執行一條命令,就在AOF中增加一條記錄。當需要恢復時,直接執行AOF寫入redis
AOF三種策略
命令 | always | everysec | no |
優點 | 不丟失數據 | 每秒一次 | 不用管 |
缺點 | IO開銷大 | 丟失一秒數據 | 不可控 |
AOF重寫
將過期的,重復的,做一些優化合并
作用:減少磁盤空間占用,加快文件恢復速度
AOF重寫兩種方式:
bgrewriteaof
aof重寫配置
AOF重寫配置
auto-aof-rewrite-min-size #AOF重寫需要的最小尺寸
auto-aof-rewrite-percentage #AOF文件增長率
aof_current_size #統計當前aof文件大小
aof_base_size #aof上次啟動和重寫的尺寸
AOF配置
RDB和AOF的比較
關于Redis持久化RDB和AOF的區別有什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。