1. 程式人生 > 實用技巧 >redis RDB AOF資料持久化

redis RDB AOF資料持久化

目錄

redis RDB持久化[手工持久化]:

RDB持久化在指定的時間間隔內生成資料集的時間點快照[point-in-time snapshot]
優點: 速度快,適合於備份
缺點: 會有資料丟失

#正常沒有做持久化時
[root@k8s-master1 6379]# redis-cli -h 10.0.0.63 -a 123
10.0.0.63:6379> set name timo
OK
10.0.0.63:6379> exit
[root@k8s-master1 6379]# redis-cli -h 10.0.0.63 -a 123
10.0.0.63:6379> get name
"timo"
沒有shutdown時資料還在,現在執行shutdown
然後重新啟動redis
10.0.0.63:6379> shutdown
not connected> exit
[root@k8s-master1 6379]# redis-server /nosql/redis/6379/redis.conf

登入進去後,查詢設定的 timo 鍵值:
10.0.0.63:6379> get name
(nil)
此時為空。


#手工持久化[RDB持久化]:
[root@k8s-master1 6379]# redis-cli -h 10.0.0.63 -a 123
10.0.0.63:6379> set name01 timo
OK
10.0.0.63:6379> save
OK
10.0.0.63:6379> shutdown   #關閉redis
not connected> exit

啟動後查詢:
[root@k8s-master1 6379]# redis-server /nosql/redis/6379/redis.conf
[root@k8s-master1 6379]# redis-cli -h 10.0.0.63 -a 123
10.0.0.63:6379> get name01
"timo"
此時就是做了手工持久化,使得資料儲存了,在重啟後依然存在。
我們知道沒有持久化的資料都在記憶體中,一旦重啟記憶體就被釋放了,此時只有手工持久化才行。 save就是手工持久化。

redis RDB持久化條件配置【適合用於備份】redis rdb持久化策略

手工持久化可以設定哪些資料會被持久化,設定條件後即使我們不手工敲save 系統也會自動幫我們做持久化操作。

rdb持久化也叫快照持久化,他會持久化當前記憶體狀態。
優點:資料持久化快。 非常適合用於備份。

RDB持久化快照條件配置
在我們不用敲save主動進行持久化的時候,我們還可以使用一些條件進行自動持久化,比如設定 100秒儲存一次。
redis.conf 新增條件如下:

save 900 1
save 300 10
save 60 10000


配置分別表示:
900秒(15分鐘)內有1個更改
300秒(5分鐘)內有10個更改
60秒內有10000個更改

redis AOF持久化

記錄伺服器執行的所有寫操作命令,並在伺服器啟動時,通過重新執行這些命令來還原資料集
AOF檔案中的命令全部以redis協議格式來儲存,新命令追加到檔案末尾。
優點: 可以最大程度保證資料不會丟失
缺點:日誌記錄的量級會比較大

RDB持久化只會儲存最後一次的操作,而AOF會儲存所有的操作。它的量級會比RDB持久化日誌更大,類似於mysql的binglog

redis AOF持久化配置

重要配置:
appendonly yes      #是否開啟持久化功能
appendfsync always  #是否開啟持久化條件  always[每次修改都持久化]  everysec[每秒持久化一次]  一般設定everysec

注意: redis叢集中,這個功能必須要開啟。
配置檔案:
daemonize yes
port 6379
logfile /nosql/redis/6379/redis.log
dir /nosql/redis/6379
dbfilename dump.rdb
#protected-mode no
bind 10.0.0.63
requirepass 123
save 900 1
save 300 10
save 60 10000

appendonly yes
appendfsync everysec

面試技巧:

redis的持久化方式有哪些,有什麼區別?
redis有兩種持久化方式,分別是 RDB持久化  AOF持久化
RDB持久化是以操作次數作為條件儲存資料的他是基於快照進行持久化的,速度更快,主從複製也依賴該功能[速度快]
AOF持久化是指定每次修改追加方式進行資料持久化操作。可以最大程度保證redis資料安全 [更安全]

redis資料型別:

string: 字元型別
Hash:  字典型別
List:  列表
set:   集合
Sorted set:  有序集合