Redis持久化
RDB快照(snapshot)
在默認情況下, Redis 將記憶體資料庫快照保存在名字為 dump.rdb 的二進制檔案中,
說明:可以對 Redis 進行設定, 讓它在“ N 秒內資料集至少有 M 個改動”這一條件被滿足時, 自動保存一次資料集,比如說, 以下設定會讓 Redis 在滿足“ 60 秒內有至少有 1000 個鍵被改動”這一條件時, 自動保存一次資料集:# save 60 1000 //關閉RDB只需要將所有的save保存策略注釋掉即可,
還可以手動執行命令生成RDB快照,進入redis客戶端執行命令save或bgsave可以生成dump.rdb檔案,每次命令執行都會將所有redis記憶體快照到一個新的rdb檔案里,并覆寫原有rdb快照檔案,
bgsave的寫時復制(COW)機制
Redis 借助作業系統提供的寫時復制技術(Copy-On-Write, COW),在生成快照的同時,依然可以正常處理寫命令,簡單來說,bgsave 子行程是由主執行緒 fork 生成的,可以共享主執行緒的所有記憶體資料,bgsave 子行程運行后,開始讀取主執行緒的記憶體資料,并把它們寫入 RDB 檔案,此時,如果主執行緒對這些資料也都是讀操作,那么,主執行緒和 bgsave 子行程相互不影響,但是,如果主執行緒要修改一塊資料,那么,這塊資料就會被復制一份,生成該資料的副本,然后,bgsave 子行程會把這個副本資料寫入 RDB 檔案,而在這個程序中,主執行緒仍然可以直接修改原來的資料,
save與bgsave對比:
| 命令 |
s |
CSDN認證博客專家
Java
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/262905.html
標籤:其他
