1. 程式人生 > >Redis中SAVE和BGSAVE的區別

Redis中SAVE和BGSAVE的區別

color 安裝 spa ted 數據持久化 我們 sts local 間隔

Redis的這兩個命令都是用於創建當前數據庫的備份。

因為Redis持久化選擇RDB快照模式,所以Redis並不是實時的進行數據持久化,而是有一定的時間間隔。這個時候如果我們想要手動進行一次持久化,可以使用save或者bgsave命令。

SAVE

基本命令:

redis 127.0.0.1:6379> SAVE 
OK

該命令將在 redis 安裝目錄中創建dump.rdb文件。

影響:

SAVE 直接調用 rdbSave函數 ,阻塞 Redis 主進程,直到保存完成為止。在主進程阻塞期間,服務器不能處理客戶端的任何請求。

如果數據量小,用此命令可能感覺不出有什麽區別,但是當數據量很大的時候,就需要謹慎使用這個命令。

BGSAVE

基本命令:

127.0.0.1:6379> BGSAVE

Background saving started

客戶端可以通過 LASTSAVE 命令查看相關信息,判斷 BGSAVE 命令是否執行成功。

影響:

BGSAVE 命令執行之後立即返回 OK ,然後 Redis fork 出一個新子進程,原來的 Redis 進程(父進程)繼續處理客戶端請求,而子進程則負責將數據保存到磁盤,然後退出。

BGSAVE方式比較適合線上的維護操作。

恢復數據

如果需要恢復數據,只需將備份文件 (dump.rdb) 移動到 redis 安裝目錄並啟動服務即可。獲取 redis 目錄可以使用 CONFIG

命令,如下所示:

redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"

以上命令 CONFIG GET dir 輸出的 redis 安裝目錄為 /usr/local/redis/bin。

Redis中SAVE和BGSAVE的區別