一 . 持久化概述 redis
redis的持久化功能是決定redis能夠做爲必定功能數據庫的核心.算法
所謂的持久化就是將內存數據能夠轉存到磁盤之上,而後再特定時刻能夠將磁盤文件的信息轉存到內存之中.數據庫
在redis之中總共有兩種方式進行持久化,一種是RDB,一種是AOF的方式.異步
[注意]性能
咱們使用redis並不必定要使用持久化,只是在須要持久的時候纔去用,spa
持久化就意味着性能的代價,可是帶來的是高可用的回報.線程
二 .持久化的方式日誌
在redis之中的兩種持久化的方式,RDB,AOF.blog
其本質上講:RDB是按照內存快照的方式進行,AOF是按照日誌的方式進行.進程
三 .RDB的基本原理
當咱們開啓RDB的使用時,redis會按照必定的策略進行快照.
本質上講很是簡單,就是建立一個快照文件,當完成時就去替換以前存在的文件.
RDB的觸發方式:
手工觸發: 可使用save()或者bgsave()命令進行觸發
被動觸發: 當咱們的redis使用複製功能的時候,底層默認的實現方式就是RDB快照文件的複製.
四 .save和bgsave命令
[1]save命令是一個同步命令,會發生線程阻塞,所以咱們通常不會去使用.
在線程阻塞時,覺得着redis不會向其餘客戶端服務,本質上是因爲redis的單進程模型決定
[2]bgsave命令:
客戶端向redis發起bgsave命令以後,redis會fork一個子進程完成RDB持久化工做.
此時會直接向客戶端返回一個成功響應.
bgsave是一個異步的非阻塞的命令,通常狀況下咱們會去使用這個命令來完成.
[注意]持久化會花費必定的時間,此時客戶端可能對數據進行修改,這個時候咱們持久的數據可能形成
不一樣步的狀況,這個問題咱們後面須要進行解決.
五 . RDB的配置
咱們首先打開redis的配置文件,找到快照部分的配置.下面咱們來講一下主要的配置內容:
[1] RDB策略
該配置的含義是表明900秒內有一次操做,或者300秒內10此操做,60秒內10000條操做,
此時會觸發RDB的持久化.
[注意]咱們通常不會使用這寫持久化策略,由於太死板了.
咱們通常會作一個定時任務,按照本身的業務邏輯決定是否持久化,使用的持久化的命令就是bgsave.
所以,該處的save策略咱們通常都會去掉.
[2]當使用bgsave命令錯誤時,是否中止寫操做
這個配置咱們通常都會配置未yes.
[3]RDB文件是否採用壓縮
這個咱們通常都會採用壓縮的算法
[4]RDB的校驗模式
咱們通常也會開啓這個校驗的模式
[5]RDB持久化的文件的名字
[6]指定持久化文件的存放路徑