Redis是內存數據庫,如果不將內存中的數據庫狀態保存到磁盤,那么一旦服務器進程退出,服務器中的數據庫狀態也會消逝,所以Redis提供了持久化功能!
在主從復制中,rdb就是備用的,存在從機上邊,不占用主機資源。
RDB:
- 在指定的時間間隔內將內存中的數據集快照寫入磁盤,也就是行話講的Snapshot快照,它恢復時是將快照文件直接讀取到內存里。
- Redis會單獨創建fork一個子進程來進行持久化,會先將數據寫入到一個臨時文件中,待持久化都結束了,再用這個臨時文件替換上次持久化好的文件,整個過程中,主進程是不進行任何IO操作的。這就確保了級高的性能。如果需要進行大規模數據的恢復,且對於數據恢復的完整性不是非常敏感,那RDB方式就要比AOF方式更加的高效。
- RDB的缺點:是最后一次持久化的數據可能丟失。
- 我們在生產環境會將dump.rdb這個文件進行備份。
redis默認的就是RDB持久化,一般情況下不需要修改這個配置。
rdb保存的文件就是dump.rdb文件
在 redis.windows.conf (windows版本)配置文件中也可以查看配置:
我們可以自己修改配置
觸發機制:
①save的規則滿足的情況下,會自動觸發rdb規則
②執行flushall命令,也會觸發rdb規則
③退出redis時,也會產生rdb文件!
備份就自動生成一個dump.rdb文件。
如何恢復rdb文件:
① 只需要將rdb文件放在我們的redis啟動目錄就可以,redis啟動的時候會自動檢查dump.rdb恢復其中的數據!
② 查看需要存在的位置:
127.0.0.1:6379> config get dir
1) "dir"
2) "D:\\Program Files\\Redis"
127.0.0.1:6379>
rdb幾乎它自己默認的配置就夠用了。
優點和缺點:
① 優點:
- 適合大規模的數據恢復!
- 對數據的完整性要求不高!
②缺點:
- 需要一定的時間間隔進程操作!如果redis意外宕機了,這個最后一次修改數據就沒有了!
- fork進程的時候,會占用一定的內存空間!!