010 redis持久化之RDB
一 . 概述
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