由於 redis 將數據保存在內存中,很容易誘發的一個問題就是,程序崩潰或服務器重啓等狀況如何保證數據的正常存儲。html
當咱們以 redis 做爲主數據庫使用時,或者將 redis 做爲緩存服務器使用時,在緩存被穿透後會對性能形成很大的影響,全部緩存同時失效,產生緩存雪崩效應,服務器崩潰。redis
持久化:將內存中的數據同步保存到硬盤上,在須要的時候將硬盤中的數據進行還原恢復。數據庫
持久化的方式:RDB 和 AOF,不少的時候是二者結合使用。緩存
(1)RDB:根據指定的規則「定時」將內存中的數據存儲到硬盤。安全
(2)AOF:每次執行命令後將命令自己記錄下來。服務器
快照:當符合必定條件時 redis 會自動將內存中的全部數據生成一份副本並保存到硬盤上。性能
執行的前提條件:優化
(1)配置自動快照的規則spa
(2)用戶執行了 SAVE 或 BGSAVE 命令htm
(3)執行 FLUSHALL 命令
(4)執行復制時
缺點:一旦 redis 程序退出,會丟失最後一次快照之後更改的全部數據。
AOF 能夠將 redis 執行的每一條寫命令追加到硬盤,形成的缺點就是下降了 redis 的性能。但從保證數據安全的角度來講是徹底能夠接受的,選用 SSD 能夠明顯提升 AOF 的性能。
《Redis 小白指南(三)- 事務、Watch 命令、過時、消息通知、管道、優化內存空間》
【博主】反骨仔
【原文】http://www.cnblogs.com/liqingwen/p/6920935.html
【參考】《Redis 入門指南》