1. 程式人生 > >010 redis持久化之RDB

010 redis持久化之RDB

數據庫 b數 pos io操作 保存 丟失 文字 表示 幫助

一 . 概述

redis的持久化功能是決定redis可以作為一定功能數據庫的核心.

在redis之中總共有兩種方式進行持久化,一種是RDB,一種是AOF的方式.

註意:我們不需要一定使用redis的持久化功能,不使用持久化功能,就

決定我們是把redis作為一種緩存使用,這和memcache沒什麽區別了.


二 .RDB的基本原理

redis是單進程的,當我們開啟RDB數據持久化之後,redis就會fork一個新進程幫助實現RDB的功能.

其實RDB的功能十分簡單,就是定時快照一下redis的內存.當快照完成之後,就去替換原先的快照內容.

當redis下一次啟動的使用直接將快照文件直接讀入到redis之中就可以完成了.

快照的相關配置都集中在redis.conf文件之中.


三 .查看redis.conf文件

我們找到redis配置文件的快照部分.

技術分享圖片

如上圖,這一部分就是redis的快照部分的配置內容.

註意 : redis默認使用的就是快照進行持久化的 .

保存策略:

  技術分享圖片

上述的文字表示redis的RDB模式下的保存策略.

解釋一下上述的文字 :

[1]save 900 1 -- 900秒內寫一次就會快照一次.

[2]save 300 10 ---300秒內10此寫操作就會快照一次.

[3]save 60 10000 : 表示60秒之內有10000此操作,就會進行一次快照.

上述的快照策略我們可以修正,調整到一個比較好的方式.

當我們不設置任何save策略,那麽RDB就不會進行快照了 .

技術分享圖片

當我們出現RBD持久化錯誤的時候.是否禁止寫操作的進行.

這樣可以保證redis的數據的一致性,但是當錯誤出現的時候,會影響redis的使用.

技術分享圖片

RDB持久化是否壓縮: 默認情況下RDB會進行壓縮.

如果想要進行最高性能,直接關閉壓縮功能,但對存儲的壓力會變大.

技術分享圖片

是否開啟RDB的校驗.

如果想要獲取最高的性能,可以設置為no.當然數據的正確可能會出現問題.

技術分享圖片

RDB文件的保存位置和保存的文件名稱.

技術分享圖片

我們查詢redis.conf文件,就可以看到該文件下面有一個dump.rdb文件.這個就是rdb的快照文件.


四 .RDB的優劣

優勢 : RDB的性能更高,因為RDB保存的最後的結果集.

劣勢: RDB不是實時的,會造成數據的丟失.

丟失的數據時最後一次數據的保存會被丟掉.

總結: 如果對數據的完整性要求不高,我們可以使用RDB的方式進行,這樣的性能會更高.

進階:

[1]RDB需要的內存開銷更高,因為需要開啟一個FORK一個進程進行RDB的監控.

[2]當數據量很大的時候,RDB的性能很差,因為快照一次的IO操作代價很大.


  

010 redis持久化之RDB