redis持久化
Redis
是一種內存型數據庫,一旦服務器進程退出,數據庫的數據就會丟失,為了解決這個問題,Redis
提供了兩種持久化的方案,將內存中的數據保存到磁盤中,避免數據的丟失。
RDB持久化
redis
提供了RDB持久化
的功能,這個功能可以將redis
在內存中的的狀態保存到硬盤中,它可以手動執行。
也可以再redis.conf
中配置,定期執行。
RDB持久化產生的RDB文件是一個經過壓縮的二進制文件,這個文件被保存在硬盤中,redis可以通過這個文件還原數據庫當時的狀態。
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服務端,准備配置文件
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 #定義持久化文件存儲位置 dbfilename dbmp.rdb #rdb持久化文件 bind 10.0.0.10 127.0.0.1 #redis綁定地址 requirepass redhat #redis登錄密碼 save 900 1 #rdb機制 每900秒 有1個修改記錄 save 300 10 #每300秒 10個修改記錄 save 60 10000 #每60秒內 10000修改記錄
2.啟動redis服務端
3.登錄redis設置一個key
redis-cli -a redhat
4.此時檢查目錄,/data/6379底下沒有dbmp.rdb文件
5.通過save觸發持久化,將數據寫入RDB文件
127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> save OK
redis持久化之AOF
AOF(append-only log file)
記錄服務器執行的所有變更操作命令(例如set del等),並在服務器啟動時,通過重新執行這些命令來還原數據集
AOF 文件中的命令全部以redis協議的格式保存,新命令追加到文件末尾。
優點:最大程序保證數據不丟
缺點:日志記錄非常大
redis-client 寫入數據 > redis-server 同步命令 > AOF文件
配置參數
AOF持久化配置,兩條參數
appendonly yes
appendfsync always 總是修改類的操作
everysec 每秒做一次持久化
no 依賴於系統自帶的緩存大小機制
1.准備aof配置文件 redis.conf
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 dbfilename dbmp.rdb requirepass redhat save 900 1 save 300 10 save 60 10000 appendonly yes appendfsync everysec
2.啟動redis服務
redis-server /etc/redis.conf
3.檢查redis數據目錄/data/6379/是否產生了aof文件
[root@web02 6379]# ls appendonly.aof dbmp.rdb redis.log
4.登錄redis-cli,寫入數據,實時檢查aof文件信息
[root@web02 6379]# tail -f appendonly.aof
5.設置新key,檢查aof信息,然后關閉redis,檢查數據是否持久化
redis-cli -a redhat shutdown redis-server /etc/redis.conf redis-cli -a redhat
redis 持久化方式有哪些?有什么區別?
rdb:基於快照的持久化,速度更快,一般用作備份,主從復制也是依賴於rdb持久化功能
aof:以追加的方式記錄redis操作日志的文件。可以最大程度的保證redis數據安全,類似於mysql的binlog