Redis持久化RDB
1. 什么是redis的持久化?
Redis 是一款內存數據庫,也就是說它把數據都存儲在內存中,持久化就是把內存中的數據存儲到電腦的磁盤上。
Redis 提供了不同級別的持久化方式:
? ? ? ? 1. RDB 持久化方式能夠在指定的時間間隔能對你的數據進行快照存儲。
? ? ? ? 2. AOF 持久化方式記錄每次對服務器寫的操作,當服務器重啟的時候會重新執行這些命令來恢復原始的數據。
本篇介紹第一種:RDB。
2. RDB(Redis DataBase)
2.1 RDB是什么?
RDB 是 Redis 持久化到磁盤上的數據文件的格式,重點內容默認的文件名是 dump.rdb。
Redis 會在指定的時間間隔內將內存中的數據集快照寫入磁盤,也就是行話講的Snapshot快照,它恢復時是將快照文件直接讀到內存里。
Redis會單獨創建(fork)一個子進程來進行持久化,會先將數據寫入到一個臨時文件中,待持久化過程都結束了,再用這個臨時文件替換上次持久化好的文件。
整個過程中,主進程是不進行任何IO操作的,這就確保了極高的性能。如果需要進行大規模數據的恢復,且對于數據恢復的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺點是最后一次持久化后的數據可能丟失。
2.2 Fork的作用是什么?
fork的作用是復制一個與當前進程一樣的進程。新進程的所有數據(變量、環境變量、程序計數器等)。
數值都和原進程一致,但是是一個全新的進程,并作為原進程的子進程。
2.3 如何手動將 redis 中的數據寫入磁盤?
使用 save 命令,或者 bgsave 命令。
- save:該命令會阻塞其他操作,例:客戶端請求。
- bgsave:該命令會在后臺異步執行寫操作,仍然可以處理客戶端請求。
- lastsave:該命令獲取最后一次成功執行快照的時間。
- flushall / flushdb:清庫命令,也會刷新 dump.rdb。
2.4 如何從RDB文件中加載數據?
Redis 在啟動的時候會自動加載 redis-server 所在的目錄下的 dump.rdb 文件(如果存在的話),如果在啟動 redis-server 服務的時候指定了別的配置文件,那就讀取那個指定的配置文件目錄下的 dump.rdb,例:
redis-server /myconf/redis.conf 命令執行之后就會去加載 /myconf 目錄下的 dump.rdb 文件來初始化 redis。
so,我們的運維人員就可以通過定期備份 dump.rdb 文件的方式來防止數據的丟失。
2.5 RDB 的優勢
- 適合大規模的數據恢復。
2.6 RDB 的劣勢
-
在一定間隔時間做一次備份,所以如果redis意外down掉的話,就?
會丟失最后一次快照后的所有修改。 -
fork的時候,內存中的數據被克隆了一份,大致2倍的膨脹性需要慎重考慮。
2.7 如何令 redis 停止寫 RDB 文件??
-
在配置文件中配置?save ""
-
在客戶端執行命令:redis-cli config set save ""
2.8 總結
?
?
?
總結
以上是生活随笔為你收集整理的Redis持久化RDB的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt:Qt实现网页自动刷新工具
- 下一篇: linux cmake编译源码,linu