天天看點

NoSQL資料庫 Redis存儲政策

redis的持久化政策分為兩種:

rdb存儲政策

aof存儲政策

1.rdb存儲政策(資料儲存位置 -> redis根目錄/bin/dmp.rdb)

按照一定的時間間隔觸發資料儲存操作

優點:

不是在使用者寫資料的同時立即儲存資料到硬碟,是以能給伺服器大量減壓

缺點:

其優點就是是其缺點,由于按照一定的時間間隔存儲,是以在不正常或者非法關閉時,會導緻最後一次的資料丢失

解決方案:

搭建redis叢集或者采用aof存儲政策(aof會犧牲性能)

1)關于rdb存儲政策的配置(redis.conf檔案)

redis預設配置如下

:(預設開啟)
save  900  1                    # 15分鐘執行一次寫操作就會儲存一次
save  300   10                  # 5分鐘執行10次寫操作就會儲存一次
save  60   10000                # 1分鐘執行10000次寫操作就會儲存一次
           
2) rdb存儲政策的原理

當觸及到rbd持久化政策時,将會fork出一個子程序

同時會拍攝目前資料庫的快照資訊(SNAPSHOT)

父程序繼續處理服務端其他業務:由子程序處理SNAPSHOT的持久化存儲,當子程序持久化結束,則自動銷毀

缺點:非法關閉,會丢失最後一次操作的資料

#### 2.aof存儲政策(資料儲存位置  ->  redis根目錄/bin/appendonly.aof)

> aof存儲政策(append only file)----->預設關閉
>
> ***特點***:`将每次寫操作存儲到aof持久化檔案(appendonly.aof)中,預設不開啟,此模式追求該可靠型`
> ***缺點***:主要是性能差點(想比較rdb存儲政策)
##### 1)  開啟aof存儲政策(redis.conf)

> appendonly yes

##### 2) aof持久化政策(redis.conf)

```shell
# appendfsync always   
appendfsync everysec
# appendfsync no
           
當設定appendfsync為no的時候,Redis不會主動調用fsync去将AOF日志内容同步到磁盤,是以這一切就完全依賴于作業系統的調試了。對大多數Linux作業系統,是每30秒進行一次fsync,将緩沖區中的資料寫到磁盤上。

當設定appendfsync為everysec的時候,Redis會預設每隔一秒進行一次fsync調用,将緩沖區中的資料寫到磁盤。但是當這一

次的fsync調用時長超過1秒時。Redis會采取延遲fsync的政策,再等一秒鐘。也就是在兩秒後再進行fsync,這一次的fsync就不管會執行多長時間都會進行。這時候由于在fsync時檔案描述符會被阻塞,是以目前的寫操作就會阻塞。

當設定appendfsync為always時,每一次寫操作都會調用一次fsync,這時資料是最安全的,當然,由于每次都會執行fsync,是以其性能也會受到影響

建議采用 appendfsync everysec(預設方式)

注:aof和rdb兩種同時配置時,如果啟動的時候aof可用,則使用aof存儲政策,對于選擇來說,aof追求高可靠性,而rdb模式追求高性能。

即優先級:aof > rdb

aof不能有異常,服務啟動異常

繼續閱讀