RDB和AOF持久化方式的區別

上一篇 <<<Redis為啥要分為16個庫
下一篇 >>>Redis與數據庫的一致性解決方案


全量同步(RDB):就是每天定時(避開高峰期)或者采用一個周期實現將數據拷貝到一個地方。
增量同步(AOF):比如采用對行為的操作實現對數據的同步。
增量同步比全量同步更加消耗服務器的內存,但是能夠更加的保證數據的同步。

RDB與AOF的區別

相同點

只要配置了,rbd和aof文件就會生成,當達到了同步的時間后,才會寫入內容。

不同點

  • 1.持久化同步方案不同



  • 2.同步策略不同

RDB方式
Redis會將數據集的快照dump到dump.rdb文件中。此外,我們也可以通過配置文件來修改Redis服務器dump快照的頻率,在打開6379.conf文件之后,我們搜索save,可以看到下面的配置信息:
save 900 1 #在900秒(15分鐘)之后,如果至少有1個key發生變化,則dump內存快照。
save 300 10 #在300秒(5分鐘)之后,如果至少有10個key發生變化,則dump內存快照。
save 60 10000 #在60秒(1分鐘)之后,如果至少有10000個key發生變化,則dump內存快照。
修改配置:
rdbcompression yes
dbfilename dump.rdb
AOF方式
appendfsync always #每次有數據修改發生時都會寫入AOF文件,能夠實時的保證數據的安全性。
appendfsync everysec #每秒鐘同步一次,該策略為AOF的缺省策略。
appendfsync no #從不同步。高效但是數據不會被持久化。
修改配置:
redis.conf中 appendonly yes,默認是no

  • 3.數據存儲不同

RDB的dump文件是二進制數據


aof是閱讀性較好的寫命令信息

  • 4.恢復速度不同

1G的RDB數據恢復耗時大概20s,比AOF要快的多

使用建議

Redis默認開啟了持久化功能,而且是全量RDB的,缺點是服務器宕機后可能會造成數據丟失。
建議最好還是搭配使用aof的everysec,既能夠保證數據的同步,效率也還可以,但是會存在丟失一秒數據的可能性,就算丟失也關系不大,因為數據庫中已經存在了數據。


推薦閱讀:
<<<分布式緩存與本地緩存的區別
<<<Ehcache基礎知識
<<<SpringBoot整合Ehcache
<<<Redis的5種數據類型
<<<Redis存放實體對象的方式及區別
<<<Redis的應用場景匯總
<<<Redis高效及線程安全的真正原因
<<<Redis為啥要分為16個庫
<<<Redis與數據庫的一致性解決方案
<<<SpringBoot整合Redis的注解版本完成數據緩存
<<<Redis的淘汰策略
<<<Redis的事務操作(Mult和Watch)知識點
<<<Redis的過期機制使用場景示例
<<<Redis實現分布式鎖的原理分析
<<<Redis分布式鎖的實現代碼示例
<<<使用Redisson工具實現分布式鎖
<<<Redis集群模式之主從復制原理及存在的缺陷
<<<Redis集群模式之哨兵模式
<<<Redis集群模式之Cluster去中心化分片集群
<<<Linux環境下安裝單機Redis
<<<Redis Cluster集群環境搭建
<<<Redis Cluster如何動態擴容與縮容
<<<Redis Cluster主從節點自動切換
<<<Redis集群模式的類型和缺陷匯總
<<<Redis緩存的穿透、擊穿和雪崩效應
<<<Redis解決穿透擊穿問題時使用的布隆過濾器知識點
<<<Redis與MySQL的數據同步解決方案
<<<阿里云的Canal框架實現Redis與Mysql同步原理及代碼示例
<<<阿里云的Canal框架配置
<<<Redis官方提出的redlock分布式鎖
<<<Redis的調優設置
<<<Redis常見問題匯總

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容