【redis】持久化RDB和AOF

redis之持久化RDB與AOF

 

redis數據持久化

Redis是一種內存型數據庫,一旦服務器進程退出,數據庫的數據就會丟失,爲了解決這個問題,Redis提供了兩種持久化的方案,將內存中的數據保存到磁盤中,避免數據的丟失。html

RDB持久化

redis提供了RDB持久化的功能,這個功能能夠將redis在內存中的的狀態保存到硬盤中,它能夠手動執行。【手動執行時經過save指令觸發的】mysql

也能夠再redis.conf中配置,按期執行redis

RDB持久化產生的RDB文件是一個通過壓縮二進制文件,這個文件被保存在硬盤中,redis能夠經過這個文件還原數據庫當時的狀態。sql

rdb配置參數:

複製代碼
RDB(持久化)
內存數據保存到磁盤
在指定的時間間隔內生成數據集的時間點快照(point-in-time snapshot)
優勢:速度快,適合作備份,主從複製就是基於RDB持久化功能實現
rdb經過再redis中使用save命令觸發 rdb


rdb配置參數:

dir /data/6379/
dbfilename  dbmp.rdb

每過900秒 有1個操做就進行持久化

save 900秒  1個修改類的操做
save 300秒  10個操做
save 60秒  10000個操做

save  900 1
save 300 10
save 60  10000
複製代碼

redis持久化之RDB實踐

1.配置啓動redis服務端的配置文件數據庫

# 建立log日誌文件
mkdir -p /data/6380/
cd /data/6380/
touch redis.log
複製代碼
daemonize yes                  # 是否開啓後臺運行
port 6379                         #端口
logfile /data/6379/redis.log  # 自定義日誌文件
dir /data/6379               #自定義持久化文件存儲位置
dbfilename  dbmp.rdb        #rdb持久化文件
bind 192.168.61.129   #redis綁定地址
requirepass redhat            #redis登陸密碼
save 900 1                    #rdb機制 每900秒 有1個修改記錄
save 300 10                    #每300秒        10個修改記錄
save 60  10000                #每60秒內        10000修改記錄
複製代碼

2.經過上面的配置文件啓動redis服務端緩存

redis-server redis.conf

登陸redis客戶端安全

# --raw參數表示支持中文
redis-cli -p 6380 -h 192.168.61.129 --raw   

三、登陸redis後設置一個key服務器

由於咱們要驗證他的數據持久化,因此咱們登陸後須要建立一個key,用save指令觸發持久化,而後殺死redis服務端的進程,app

複製代碼
192.168.61.129:6380> KEYS *

192.168.61.129:6380> set name "alex"
OK
192.168.61.129:6380> set age 19
OK
192.168.61.129:6380> get name
alex
192.168.61.129:6380> get age
19
複製代碼

4.此時檢查目錄,/data/6380底下沒有dbmp.rdb文件post

5.經過save觸發持久化,將數據寫入RDB文件

複製代碼
192.168.61.129:6380> KEYS *

192.168.61.129:6380> set name "alex"
OK
192.168.61.129:6380> set age 19
OK
192.168.61.129:6380> get name
alex
192.168.61.129:6380> get age
19
192.168.61.129:6380> SAVE
OK
複製代碼

六、查看持久化文件dbmp.rdb

redis持久化之AOF實踐

AOF(append-only log file)
記錄服務器執行的全部變動操做命令(例如set del等),並在服務器啓動時,經過從新執行這些命令來還原數據集
AOF 文件中的命令所有以redis協議的格式保存,新命令追加到文件末尾。
優勢:最大程序保證數據不丟
缺點:日誌記錄很是大

redis-client   寫入數據  >  redis-server   同步命令   >  AOF文件

配置參數

AOF持久化配置,兩條參數

appendonly yes
appendfsync  always    老是修改類的操做
             everysec   每秒作一次持久化   # 經常使用
             no     依賴於系統自帶的緩存大小機制

一、準備aof配置文件redis.conf

複製代碼
daemonize yes   # 進程是否在後臺運行
port 6380          # 端口
logfile /data/6380/redis.log   # log日誌
dir /data/6380            
dbfilename  dbmp.rdb       # 數據持久化文件
bind 192.168.61.129        # 綁定ip
requirepass root         # 設置密碼爲root
appendonly yes
appendfsync everysec     #每秒作一次持久化
複製代碼

2.基於配置文件啓動redis服務端

redis-server /etc/redis.conf

3.檢查redis數據目錄/data/6380/是否產生了aof文件

[root@szx 6380]# ls
appendonly.aof  dbmp.rdb  redis.log

4.登陸redis-cli,寫入數據,實時檢查aof文件信息

[root@szx ~ 20:09:35]#tail -f /data/6380/appendonly.aof 

5.設置新key,檢查aof信息,而後關閉redis,檢查數據是否持久化

複製代碼
[root@szx / 19:50:25]#redis-cli -p 6380 -h 192.168.61.129 --raw  
192.168.61.129:6380> auth root
OK
192.168.61.129:6380> KEYS *

192.168.61.129:6380> SET name "alex"
OK
192.168.61.129:6380> SET age 87
OK
複製代碼

步驟:

修改配置文件-->啓動redis服務端-->登陸redis客戶端-->建立key

退出客戶端殺死redis服務端進程-->重啓redis並登陸-->查看以前建立的key是否存在

查看數據持久化的文件,全部操做記錄都保存在文件中

實時監測數據持久化文件:

redis 持久化方式有哪些?有什麼區別?

rdb:基於快照的持久化,速度更快,通常用做備份,主從複製也是依賴於rdb持久化功能

aof:以追加的方式記錄redis操做日誌的文件。能夠最大程度的保證redis數據安全,相似於mysql的binlog

相關文章
相關標籤/搜索