010 redis持久化之RDB

一 . 持久化概述 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]指定持久化文件的存放路徑

相關文章
相關標籤/搜索