一,save保存數據到磁盤的方式:
Redis Save 命令執行一個同步保存操作,將當前 Redis 實例的所有數據快照(snapshot)以 RDB 文件的形式保存到硬盤。
語法
redis Save 命令基本語法如下:
redis 127.0.0.1:6379> SAVE
返回值
保存成功時返回 OK 。
二,BGSAVE保存數據到磁盤的方式:
BGSAVE 命令執行之后立即返回 OK ,然后 Redis fork 出一個新子進程,原來的 Redis 進程(父進程)繼續處理客戶端請求,而子進程則負責將數據保存到磁盤,然后退出。
客戶端可以通過 LASTSAVE 命令查看相關信息,判斷 BGSAVE 命令是否執行成功。
時間復雜度:
O(N), N 為要保存到數據庫中的 key 的數量。
案例:
redis> BGSAVE
Background saving started
三,結論
SAVE 保存是阻塞主進程,客戶端無法連接redis,等SAVE完成后,主進程才開始工作,客戶端可以連接
BGSAVE 是fork一個save的子進程,在執行save過程中,不影響主進程,客戶端可以正常鏈接redis,等子進程fork執行save完成后,通知主進程,子進程關閉。很明顯BGSAVE方式比較適合線上的維護操作,兩種方式的使用一定要了解清楚在謹慎選擇。