redis持久化配置
阿新 • • 發佈:2020-12-02
Redis由於支援非常豐富的記憶體資料結構型別,如何把這些複雜的記憶體組織方式持久化到磁碟上是一個難題,所以Redis的持久化方式與傳統資料庫的方式有比較多的差別,Redis一共支援四種持久化方式,分別是:
- RDB定時快照方式(snapshot):RDB 將資料庫的快照(snapshot)以二進位制的方式儲存到磁碟中。
- AOF基於語句追加檔案的方式:則以協議文字的方式,將所有對資料庫進行過寫入的命令(及其引數)記錄到 AOF 檔案,以此達到記錄資料庫狀態的目的。
- 虛擬記憶體(vm) (被廢棄)
- Diskstore方式 (被廢棄)
1、RDB預設開啟:
[root@redis-master src]# cd ..
[root@redis -master redis]# vim redis.conf
#dbfilename:持久化資料儲存在本地的檔案
dbfilename dump.rdb
#dir:持久化資料儲存在本地的路徑
dir /data/application/redis/data
##snapshot觸發的時機,save <seconds> <changes>
##如下為900秒後,至少有一個變更操作,才會snapshot
##對於此值的設定,需要謹慎,評估系統的變更操作密集程度
##可以通過save “”來關閉snapshot功能
#save時間,以下分別表示更改了1個key時間隔900s進行持久化儲存;更改了10個key300s進行儲存;更改10000個key60s進行儲存。
save 900 1
save 300 10
save 60 10000
##yes代表當使用bgsave命令持久化出錯時候停止寫RDB快照檔案,no表明忽略錯誤繼續寫檔案,“錯誤”可能因為磁碟已滿/磁碟故障/OS級別異常等
stop-writes-on-bgsave-error yes
##是否啟用rdb檔案壓縮,預設為“yes”,壓縮往往意味著“額外的cpu消耗”,同時也意味著較短的網路傳輸時間
rdbcompression yes
注意:每次快照持久化都是將記憶體資料完整寫入到磁碟一次,如果資料量大的話,而且寫操作比較多,必然會引起大量的磁碟io操作,可能會嚴重影響效能。
2、AOF預設關閉
開啟方法:
[root@redis-master redis]# vim redis.conf
修改如下:
1、此選項為aof功能的開關,預設為“no”,可以通過“yes”來開啟aof功能,只有在“yes”下,aof重寫/檔案同步等特性才會生效
====================================
2、指定aof檔名稱
appendfilename appendonly.aof
====================================
3、指定aof操作中檔案同步策略,有三個合法值:always everysec no,預設為everysec
appendfsync everysec
always #每次有資料修改發生時都會寫入AOF檔案。
everysec #每秒鐘同步一次,該策略為AOF的預設策略
no #從不同步。高效但是資料不會被持久化
開啟持久化功能後,重啟redis後,資料會自動通過持久化檔案恢復
3、拓展RDB快照備份恢復:
redis資料庫備份與恢復(dump.rdb快照方式),兩臺機器
做備份的redis
做備份機器的redis.conf配置檔案內容:
dbfilename dump.rdb
dir /data/application/redis/data
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
備份資料:
[root@redis-slave-1 redis]# src/redis-cli
127.0.0.1:6379> set name3 xiaobi
OK
127.0.0.1:6379> set name4 xiaotao
OK
127.0.0.1:6379> BGSAVE 執行備份,或者敲SAVE
[root@redis-slave-1 redis]# ls data/
dump.rdb
[root@redis-slave-1 redis]# scp data/dump.rdb 192.168.62.135:/usr/local/redis/data/
恢復資料的redis
修改redis.conf配置檔案
將dump.rdb資料檔案存放到配置檔案制定的目錄下,直接啟動即可
[root@redis-master redis]# src/redis-server redis.conf &
[root@redis-master redis]# src/redis-cli
[root@redis-master redis]#
127.0.0.1:6379> get name3
"xiaobi"
127.0.0.1:6379> get name4
"xiaotao"