redis 持久化

redis 持久化

redis 持久化有兩種方式:1. RDB 方式 , 2. AOF 方式

RDB 方式

RDB持久化方式,是redis默認的持久方式。它是根據一定的“規則”自動或者是手動的,以“快照的”形式,將內存中的數據存儲到硬盤中。
整個存儲的過程叫“快照”.

快照原理

  1. redis 使用fork函數複製一份當前進程的副本
  2. 主進程繼續處理客戶端的請求,子進程將數據寫入硬盤臨時文件
  3. 子進程寫入完成所有數據後湖使用臨時文件替換舊的RDB文件。

快照文件位置

快照默認存儲當前進程工作目錄下dump.rdb
獲取redis 的目錄命令: config get dir
修改位置參數:

dir: 目錄

dbfilename : 文件名稱

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir ./

RDB數據快照幾種方式:

1. 自動快照

redis 允許用戶自定義“自動快照規則”。
規則格式: save + seconds + changes
seconds: 時間(秒) changes: 內存中鍵被修改的次數

redis 提供如下默認配置:

save 900 1
save 300 10
save 60 10000

分別代表:

900秒裏有一次修改就自動持久化

300秒內有10被修改就自動持久化

1分鐘中有一萬次被修改就自動持久化

驗證方法

修改 redis.conf 的快照策略,通過 lastsave: 查看最近一次快照時間,比較保存前後的時間差異,來判斷

2. 命令持久化

redis 除了自動快照,也可以手動進行快照,save, bigsave, flushall

save 命令

當執行save命令時候,redis會“同步”的方式進行快照操作,在快照過程中會“阻塞”所有的客戶端請求。 數據量大時候,有可能造成客戶端請求超時.

bigsave 命令

bigsave 不同於save 操作,它是採用異步的方式進行快照, 當進行bigsave命令後,redis會立即返回成功,redis服務器可以繼續處理客戶端的請求。
如果要判斷快照是否成功,可以通過lastsave命令;
lastsave 可以獲取最近一次成功的快照時間。 將快照前後的兩次lastsave 時間做比對;

3. 主從複製

以後補充。

AOF 方式

默認情況下 redis 沒有開啓AOF(append only file) 方式持久化,因爲AOF是採用日誌的形式將每一條寫命令都追加到硬盤上,這一過程明顯會降低redis的性能。

開啓方式與存儲文件名稱

appendonly yes

appendfilename appendonly.aof

發佈了49 篇原創文章 · 獲贊 13 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章