Redis中SAVE和BGSAVE的區別
阿新 • • 發佈:2019-01-22
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的區別