精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

讀完這篇,你一定能真正理解Redis持久化

開發 架構 開發工具 Redis
Redis 是一個開源( BSD 許可)的,內存中的數據結構存儲系統,它可以用作數據庫、緩存和消息中間件。

 它支持的數據類型很豐富,如字符串、鏈表、集合、以及散列等,并且還支持多種排序功能。

什么叫持久化?

用一句話可以將持久化概括為:將數據(如內存中的對象)保存到可***保存的存儲設備中。

持久化的主要應用是將內存中的對象存儲在數據庫中,或者存儲在磁盤文件中、 XML 數據文件中等等。

也可以從如下兩個層面來理解持久化:

  • 應用層:如果關閉( Close )你的應用,然后重新啟動則先前的數據依然存在。
  • 系統層:如果關閉( Shut Down )你的系統(電腦),然后重新啟動則先前的數據依然存在。

Redis 為什么要持久化?

Redis 中的數據類型都支持 Push/Pop、Add/Remove 及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。

在此基礎上,Redis 支持各種不同方式的排序。與 Memcached 一樣,為了保證效率,數據都是緩存在內存中。

因為數據都是緩存在內存中的,當你重啟系統或者關閉系統后,緩存在內存中的數據都會消失殆盡,再也找不回來了。

所以,為了讓數據能夠長期保存,就要將 Redis 放在緩存中的數據做持久化存儲。

[[250652]]

 

Redis 怎么實現持久化?

在設計之初,Redis 就已經考慮到了這個問題。官方提供了多種不同級別的數據持久化的方式:

  • RDB 持久化方式能夠在指定的時間間隔對你的數據進行快照存儲。
  • AOF 持久化方式記錄每次對服務器寫的操作,當服務器重啟的時候會重新執行這些命令來恢復原始的數據,AOF 命令以 Redis 協議追加保存每次寫的操作到文件末尾。

Redis 還能對 AOF 文件進行后臺重寫,使得 AOF 文件的體積不至于過大。

  • 如果你只希望你的數據在服務器運行的時候存在,你也可以不使用任何持久化方式。
  • 你也可以同時開啟兩種持久化方式,在這種情況下,當 Redis 重啟的時候會優先載入 AOF 文件來恢復原始的數據,因為在通常情況下 AOF 文件保存的數據集要比 RDB 文件保存的數據集要完整。

如果你不知道該選擇哪一個級別的持久化方式,那我們就先來了解一下 AOF 方式和 RDB 方式有什么樣的區別,并且它們各自有何優劣,學習完之后,再來考慮該選擇哪一種級別。

RDB 方式與 AOF 方式的優勢對比

RDB 方式與 AOF 方式的優點對比

首先我們來看一看官方對于兩種方式的優點描述,并做個對比,然后再看一看兩種方式的缺點描述。

 

RDB 方式的優點:

  • RDB 是一個非常緊湊的文件,它保存了某個時間點的數據集,非常適用于數據集的備份。
  • 比如你可以在每個小時保存一下過去 24 小時內的數據,同時每天保存過去 30 天的數據,這樣即使出了問題你也可以根據需求恢復到不同版本的數據集。
  • RDB 是一個緊湊的單一文件,很方便傳送到另一個遠端數據中心,非常適用于災難恢復。
  • RDB 在保存 RDB 文件時父進程唯一需要做的就是 Fork 出一個子進程,接下來的工作全部由子進程來做,父進程不需要再做其他 IO 操作,所以 RDB 持久化方式可以***化 Redis 的性能。
  • 與 AOF 相比,在恢復大的數據集的時候,RDB 方式會更快一些。

當 Redis 需要保存 dump.rdb 文件時, 服務器執行以下操作:

  • Redis 調用 Forks,同時擁有父進程和子進程。
  • 子進程將數據集寫入到一個臨時 RDB 文件中。
  • 當子進程完成對新 RDB 文件的寫入時,Redis 用新 RDB 文件替換原來的 RDB 文件,并刪除舊的 RDB 文件。

這種工作方式使得 Redis 可以從寫時復制(copy-on-write)機制中獲益。

 

AOF 方式的優點:

  • 使用 AOF 會讓你的 Redis 更加耐久。
  • 你可以使用不同的 Fsync 策略:無 Fsync、每秒 Fsync 、每次寫的時候 Fsync 使用默認的每秒 Fsync 策略。

Redis 的性能依然很好( Fsync 是由后臺線程進行處理的,主線程會盡力處理客戶端請求),一旦出現故障,你最多丟失 1 秒的數據。

  • AOF文件是一個只進行追加的日志文件,所以不需要寫入 Seek,即使由于某些原因(磁盤空間已滿,寫的過程中宕機等等)未執行完整的寫入命令,你也可使用 redis-check-aof 工具修復這些問題。
  • Redis 可以在 AOF 文件體積變得過大時,自動地在后臺對 AOF 進行重寫: 重寫后的新 AOF 文件包含了恢復當前數據集所需的最小命令集合。

整個重寫操作是絕對安全的,因為 Redis 在創建新 AOF 文件的過程中,會繼續將命令追加到現有的 AOF 文件里面,即使重寫過程中發生停機,現有的 AOF 文件也不會丟失。

而一旦新 AOF 文件創建完畢,Redis 就會從舊 AOF 文件切換到新 AOF 文件,并開始對新 AOF 文件進行追加操作。

  • AOF 文件有序地保存了對數據庫執行的所有寫入操作,這些寫入操作以 Redis 協議的格式保存。

因此 AOF 文件的內容非常容易被人讀懂, 對文件進行分析(parse)也很輕松。導出(export) AOF 文件也非常簡單。

舉個例子,如果你不小心執行了 FLUSHALL 命令,但只要 AOF 文件未被重寫,那么只要停止服務器, 移除 AOF 文件末尾的 FLUSHALL 命令,并重啟 Redis ,就可以將數據集恢復到 FLUSHALL 執行之前的狀態。

優點對比總結:

  • RDB 方式可以保存過去一段時間內的數據,并且保存結果是一個單一的文件,可以將文件備份到其他服務器,并且在回復大量數據的時候,RDB 方式的速度會比 AOF 方式的回復速度要快。
  • AOF 方式默認每秒鐘備份 1 次,頻率很高,它的操作方式是以追加的方式記錄日志而不是數據,并且它的重寫過程是按順序進行追加,所以它的文件內容非常容易讀懂。

可以在某些需要的時候打開 AOF 文件對其編輯,增加或刪除某些記錄,***再執行恢復操作。

RDB 方式與 AOF 方式的缺點對比

RDB 方式的缺點:

  • 如果你希望在 Redis 意外停止工作(例如電源中斷)的情況下丟失的數據最少的話,那么 RDB 不適合你。

雖然你可以配置不同的 Save 時間點(例如每隔 5 分鐘并且對數據集有 100 個寫的操作),但是 Redis 要完整的保存整個數據集是一個比較繁重的工作。

你通常會每隔 5 分鐘或者更久做一次完整的保存,萬一 Redis 意外宕機,你可能會丟失幾分鐘的數據。

  • RDB 需要經常 Fork 子進程來保存數據集到硬盤上,當數據集比較大的時,Fork 的過程是非常耗時的,可能會導致 Redis 在一些毫秒級內不能響應客戶端的請求。

如果數據集巨大并且 CPU 性能不是很好的情況下,這種情況會持續 1 秒,AOF 也需要 Fork,但是你可以調節重寫日志文件的頻率來提高數據集的耐久度。

AOF 方式的缺點:

  • 對于相同的數據集來說,AOF 文件的體積通常要大于 RDB 文件的體積。
  • 根據所使用的 Fsync 策略,AOF 的速度可能會慢于 RDB。在一般情況下,每秒 Fsync 的性能依然非常高,而關閉 Fsync 可以讓 AOF 的速度和 RDB 一樣快,即使在高負荷之下也是如此。

不過在處理巨大的寫入載入時,RDB 可以提供更有保證的***延遲時間(Latency)。

缺點對比總結:

  • RDB 由于備份頻率不高,所以在回復數據的時候有可能丟失一小段時間的數據,而且在數據集比較大的時候有可能對毫秒級的請求產生影響。
  • AOF 的文件提及比較大,而且由于保存頻率很高,所以整體的速度會比 RDB 慢一些,但是性能依舊很高。

RDB 與 AOF 工作原理

 

 

 

 

AOF 重寫和 RDB 創建快照一樣,都巧妙地利用了寫時復制機制:

  • Redis 執行 fork() ,現在同時擁有父進程和子進程。
  • 子進程開始將新 AOF 文件的內容寫入到臨時文件。
  • 對于所有新執行的寫入命令,父進程一邊將它們累積到一個內存緩存中,一邊將這些改動追加到現有 AOF 文件的末尾,這樣即使在重寫的中途發生停機,現有的 AOF 文件也還是安全的。
  • 當子進程完成重寫工作時,它給父進程發送一個信號,父進程在接收到信號之后,將內存緩存中的所有數據追加到新 AOF 文件的末尾。
  • 現在 Redis 原子地用新文件替換舊文件,之后所有命令都會直接追加到新 AOF 文件的末尾。

付諸實踐,RDB 與 AOF 的實現

[[250655]]

 

RDB 方式持久化的開啟與配置

Redis 默認的持久化方式是 RDB ,并且默認是打開的。RDB 的保存方式分為主動保存與被動保存。

主動保存可以在 redis-cli 中輸入 Save 即可;被動保存需要滿足配置文件中設定的觸發條件,目前官方默認的觸發條件可以在 redis.conf 中看到:

save 900 1save 300 10save 60 10000

其含義為:

服務器在900秒之內,對數據庫進行了至少1次修改。服務器在300秒之內,對數據庫進行了至少10次修改。服務器在60秒之內,對數據庫進行了至少10000次修改。

滿足觸發條件后,數據就會被保存為快照,正是因為這樣才說 RDB 的數據完整性是比不上 AOF 的。

觸發保存條件后,會在指定的目錄生成一個名為 dump.rdb 的文件,等到下一次啟動 Redis 時,Redis 會去讀取該目錄下的 dump.rdb 文件,將里面的數據恢復到 Redis。

這個目錄在哪里呢?我們可以在客戶端中輸入命令 config get dir 查看:

  1. gannicus@$ src/redis-cli 
  2. 127.0.0.1:6379> config get dir 
  3. 1) "dir" 
  4. 2) "/home/gannicus/Documents/redis-5.0.0" 
  5. 127.0.0.1:6379>  

 

返回結果中的"/home/gannicus/Documents/redis-5.0.0"就是存放 dump.rdb 的目錄。

在測試之前,說明一下前提:Redis 是直接從官網下載的壓縮包,解壓后得到 redis-x.x.x 文件夾。

比如我的是 redis-5.0.0,然后進入文件夾,在 redis-5.0.0 項目根目錄使用 make 命令安裝。

 

RDB 被動觸發保存測試

剛才提到它分為主動保存與被動觸發,現在我們來測試一下被動觸發。首先啟動 redis-server,然后再打開客戶端 redis-cli ,先增添幾條記錄:

127.0.0.1:6379> set lca 1OK127.0.0.1:6379> set lcb 1OK127.0.0.1:6379> set lcc 1OK127.0.0.1:6379> set lcd 1OK127.0.0.1:6379> set lce 1OK127.0.0.1:6379> set lcf 1OK127.0.0.1:6379> set lcg 1OK127.0.0.1:6379> set lch 1OK127.0.0.1:6379> set lci 1OK127.0.0.1:6379> set lcj 1OK127.0.0.1:6379> set lck 1OK127.0.0.1:6379> set lcl 1OK127.0.0.1:6379> set lcm 1OK

可以看到,總共添加了 13 條記錄:

127.0.0.1:6379> keys * 1) "lca" 2) "lcd" 3) "lcg" 4) "lce" 5) "lcb" 6) "lcm" 7) "lcf" 8) "lci" 9) "lcl"10) "lcc"11) "lck"12) "lcj"13) "lch"127.0.0.1:6379>

然后發現 redis-server 端的日志窗口中出現了如下的提示:

21971:M 21 Oct 2018 16:52:44.062 * 10 changes in 300 seconds. Saving...21971:M 21 Oct 2018 16:52:44.063 * Background saving started by pid 2255222552:C 21 Oct 2018 16:52:44.066 * DB saved on disk21971:M 21 Oct 2018 16:52:44.165 * Background saving terminated with success

從英文提示中可以大概讀懂這些內容,它檢測到 300 秒內有 10 條記錄被改動,剛才我們添加了 13 條數據記錄,滿足 redis.conf 中對于 RDB 數據保存的條件。

所以這里執行數據保存操作,并且提示開辟了一個 22552 的進程出來執行保存操作,***提示保存成功。并且在目錄內看到有 dump.rdb 文件生成。

現在將 Redis 進程 Kill,哪些數據會被保存?通過命令 kill -9 pid ( pid 是進程編號)模擬 Redis 異常關閉,然后再啟動 Redis 。

我們來看一看,到底是只保存了 10 條記錄還是 13 條全都保存下來了?

127.0.0.1:6379> keys * 1) "lcb" 2) "lcj" 3) "lcd" 4) "lch" 5) "lci" 6) "lcc" 7) "lcf" 8) "lce" 9) "lca"10) "lcg"127.0.0.1:6379>

重啟后查看記錄,發現 13 條記錄中只有 10 條記錄會被保存,這也印證了之前所說,RDB 方式的數據完整性是不可靠的,除非斷掉的那一刻正好是滿足觸發條件的條數。

關閉 RDB

剛才提到了,它是默認啟用的,如果你不需要它可以在配置文件中將這 3 個配置注釋掉,并新增 save " " 即可:

  1.   save "" 
  2. # save 900 1 
  3. # save 300 10 
  4. # save 60 10000 

保存配置文件后需要重新啟動 Redis 服務才會生效,然后繼續添加十幾條記錄:

  1. 127.0.0.1:6379> keys * 
  2.  1) "lcb" 
  3. ... 
  4. 23) "lca" 
  5. 24) "lcg" 
  6. 127.0.0.1:6379>  

在之前已有 10 條的基礎上我再增加了 14 條記錄,這次同樣要通過 kill 來模擬 Redis 異常關閉,再啟動服務看一看,數據是否還被保存:

  1. 127.0.0.1:6379> keys * 
  2.  1) "lcb" 
  3.  2) "lcj" 
  4.  3) "lcd" 
  5.  4) "lch" 
  6.  5) "lci" 
  7.  6) "lcc" 
  8.  7) "lcf" 
  9.  8) "lce" 
  10.  9) "lca" 
  11. 10) "lcg" 
  12. 127.0.0.1:6379>  

發現后面添加的 14 條記錄并沒有被保存,恢復數據的時候僅僅只是恢復了之前的 10 條。

并且觀察 Redis 服務端窗口日志,并未發現像之前一樣的觸發保存的提示,證明 RDB 方式已經被關閉。

RDB 主動保存測試

通過配置文件關閉被動觸發,那么主動關閉是否還會生效呢?

在 Redis 客戶端( redis-cli )通過 del 命令刪除幾條記錄,然后輸入 save 命令執行保存操作:

  1. 127.0.0.1:6379> keys * 
  2.  1) "lcc" 
  3.  2) "lch" 
  4.  3) "lcb" 
  5.  4) "lci" 
  6.  5) "lce" 
  7.  6) "lcj" 
  8.  7) "lcg" 
  9.  8) "lca" 
  10.  9) "lcd" 
  11. 10) "lcf" 
  12. 127.0.0.1:6379> del lca lcb lcc 
  13. (integer) 3 
  14. 127.0.0.1:6379> save 
  15. OK 
  16. 127.0.0.1:6379>  

 

可以看到 redis-server 的日志有新的提示:22598:M 21 Oct 2018 17:22:31.365 * DB saved on disk,它告訴我們數據已經保存。

那么繼續模擬異常關閉,再打開服務,看一看是否真的保存了這些操作:

  1. 127.0.0.1:6379> keys * 
  2. 1) "lci" 
  3. 2) "lcj" 
  4. 3) "lcd" 
  5. 4) "lcg" 
  6. 5) "lcf" 
  7. 6) "lce" 
  8. 7) "lch" 
  9. 127.0.0.1:6379>  

 

果不其然,這幾個刪除操作都被保存了下來,恢復過來的數據中已經沒有那 3 條記錄了,證明主動關閉不受配置文件的影響。除了 Save 還有其他的保存方式么?

Save 和 Bgsave 保存

有的,Redis 提供了 Save 和 Bgsave 這兩種不同的保存方式,并且這兩個方式在執行的時候都會調用 rdbSave 函數。

但它們調用的方式各有不同:

  • Save 直接調用 rdbSave方法 ,阻塞 Redis 主進程,直到保存完成為止。在主進程阻塞期間,服務器不能處理客戶端的任何請求。
  • Bgsave 則 Fork 出一個子進程,子進程負責調用 rdbSave ,并在保存完成之后向主進程發送信號,通知保存已完成。

因為 rdbSave 在子進程被調用,所以 Redis 服務器在 Bgsave 執行期間仍然可以繼續處理客戶端的請求。

Save 是同步操作,Bgsave 是異步操作。Bgsave 命令的使用方法和 Save 命令的使用方法是一樣的:

  1. 127.0.0.1:6379> keys * 
  2. 1) "lci" 
  3. 2) "lcj" 
  4. 3) "lcd" 
  5. 4) "lcg" 
  6. 5) "lcf" 
  7. 6) "lce" 
  8. 7) "lch" 
  9. 127.0.0.1:6379> del lci lcj  
  10. (integer) 2 
  11. 127.0.0.1:6379> bgsave 
  12. Background saving started 
  13. 127.0.0.1:6379> keys * 
  14. 1) "lcd" 
  15. 2) "lcg" 
  16. 3) "lcf" 
  17. 4) "lce" 
  18. 5) "lch" 
  19. 127.0.0.1:6379>  

 

Shutdown 保存

事實上,Shutdown 命令也是可以保存數據的,驚不驚喜。它會在關閉前將數據保存下來,意不意外?

  1. 127.0.0.1:6379> set app 1 
  2. OK 
  3. 127.0.0.1:6379> set apps 1 
  4. OK 
  5. 127.0.0.1:6379> keys * 
  6. 1) "apps" 
  7. 2) "lcd" 
  8. 3) "lcg" 
  9. 4) "lcf" 
  10. 5) "app" 
  11. 6) "lce" 
  12. 7) "lch" 
  13. 127.0.0.1:6379> shutdown 
  14. not connected> quit 
  15. gannicus@$  

然后 Redis 服務就被關閉掉了。我們需要重新啟動 Redis 服務,到客戶端中看一看是否生效:

  1. gannicus@$ src/redis-cli 
  2. 127.0.0.1:6379> keys * 
  3. 1) "lce" 
  4. 2) "lcf" 
  5. 3) "lcd" 
  6. 4) "lch" 
  7. 5) "lcg" 

竟然沒有生效,刺不刺激?這是為什么呢?明明官方文檔之 Shutdown 就說會保存了才退出的,你騙人~注意到,文檔中有一句:

 

恍然大悟,原來是要在持久化被打開的情況下,通過 Shutdown 命令關閉才不會丟失數據,那么就到配置文件中將那幾個 Save 的配置項打開吧:

  1. #   save ""save 900 1 
  2. save 300 10 
  3. save 60 10000 

然后再開啟 Redis 服務,再嘗試一遍(過程為:添加 -> shutdown -> 重啟服務 -> 查看):

  1. 127.0.0.1:6379> set app 1 
  2. OK 
  3. 127.0.0.1:6379> set apps 1 
  4. OK 
  5. 127.0.0.1:6379> shutdown 
  6. not connected> quit 
  7. gannicus@$ src/redis-cli 
  8. 127.0.0.1:6379> keys * 
  9. 1) "lce" 
  10. 2) "lch" 
  11. 3) "app" 
  12. 4) "lcf" 
  13. 5) "apps" 
  14. 6) "lcd" 
  15. 7) "lcg" 
  16. 127.0.0.1:6379>  

 

這下終于弄明白了。

 

AOF 方式持久化的開啟與配置

開啟 AOF

默認是不開啟 AOF 的,如果想要啟用則需要到 redis.conf 配置文件中開啟,打開 redis.conf:

  1. $ vim redis.conf 

然后在文件中找到 appendonly 并將 no 改為 yes:

  1. appendonly yes 

即為開啟了 AOF 方式的持久化。

設置同步方式

AOF 還有支持幾種同步方式,它們分別是:

  1. appendfsync always  # 每次有數據修改發生時都會寫入AOF文件(安全但是費時)。 
  2. appendfsync everysec  # 每秒鐘同步一次,該策略為AOF的缺省策略。 
  3. appendfsync no  # 從不同步。高效但是數據不會被持久化。 

默認配置是 everysec,你可以根據需求進行調整,這里我將配置改成 always:

  1. appendfsync always 
  2. # appendfsync everysec 
  3. # appendfsync no 

自定義 AOF 記錄文件的文件名

Redis 設置有默認的文件名,在配置中顯示為:

  1. appendfilename "appendonly.aof" 

你可以讓其保持默認名字,也可以指定其他的文件名,比如:

  1. appendfilename "RNGLetme.aof" 

 

將 appendonly、appendfsync 和 appendfilename 設置好并保存。重新啟動 Redis 服務:

  1. $./redis-server 

通過命令 ls 查看本地文件,可以看到新生成了一個名為 RNGLetme.aof 的文件,可以使用:

  1. $cat RNGLetme.aof 

來查看里面的內容,由于當前未進行數據的改動,所以是空白的。然后打開 Redis 的客戶端:

  1. $./redis-cli 

并且添加幾條數據記錄:

  1. 127.0.0.1:6379> set rng lpl 
  2. OK 
  3. 127.0.0.1:6379> set ig lpl 
  4. OK 
  5. 127.0.0.1:6379> set edg lpl 
  6. OK 
  7. 127.0.0.1:6379> keys * 
  8. 1) "edg" 
  9. 2) "rng" 
  10. 3) "ig" 
  11. 127.0.0.1:6379>  

可以看到,成功添加了 rng、edg、ig 這三條記錄,然后打開 RNGLetme.aof 文件,看看里面的記錄:

  1. *2 
  2. $6 
  3. SELECT 
  4. $1 
  5. *3 
  6. $3 
  7. set 
  8. $3 
  9. rng 
  10. $3 
  11. lpl 
  12. *3 
  13. $3 
  14. set 
  15. $2 
  16. ig 
  17. $3 
  18. lpl 
  19. *3 
  20. $3 
  21. set 
  22. $3 
  23. edg 
  24. $3 
  25. lpl 

 

每一次的數據添加都被記錄下來了。那如果是刪除操作呢,也會被記錄下來么?

  1. 127.0.0.1:6379> del edg 
  2. (integer) 1 
  3. 127.0.0.1:6379> keys * 
  4. 1) "rng" 
  5. 2) "ig" 
  6. 127.0.0.1:6379>  

執行完刪除操作后,再看一看 RNGLetme.aof 文件中的記錄:

 

 

對比之前的記錄,新增了 del edg 的操作記錄。這就印證了之前對 AOF 的描述:以日志的方式將數據變動記錄下來。

 

AOF 恢復測試

下面同樣是通過 Kill 命令模擬 Redis 異常關閉:

  1. gannicus@$ kill -9 22645 

然后再重新啟動 Redis 服務:

  1. $ src/redis-server redis.conf 

接著通過客戶端看一看,那些數據是否都在:

  1. $ src/redis-cli 
  2. 127.0.0.1:6379> keys * 
  3. 1) "ig" 
  4. 2) "rng" 

 

可以看到,rng 和 ig 都還在,意味著持久化是生效的。

怎樣從 RDB 方式切換為 AOF 方式

在 Redis 2.2 或以上版本,可以在不重啟的情況下,從 RDB 切換到 AOF :

為***的 dump.rdb 文件創建一個備份、將備份放到一個安全的地方。

執行以下兩條命令:

  1. redis-cli config set appendonly yes 
  2. redis-cli config set save “” 

確保寫命令會被正確地追加到 AOF 文件的末尾。執行的***條命令開啟了 AOF 功能:Redis 會阻塞直到初始 AOF 文件創建完成為止,之后 Redis 會繼續處理命令請求,并開始將寫入命令追加到 AOF 文件末尾。

執行的第二條命令用于關閉 RDB 功能。這一步是可選的,如果你愿意的話,也可以同時使用 RDB 和 AOF 這兩種持久化功能。

注意:別忘了在 redis.conf 中打開 AOF 功能!否則服務器重啟后,之前通過 CONFIG SET 命令設置的配置就會被遺忘,程序會按原來的配置來啟動服務器。

優先選擇 RDB 還是 AOF 呢?

[[250657]]

 

分析對比兩種方式并做了測試后,發現這是兩種不同風格的持久化方式。那么應該如何選擇呢?

  • 對于企業級的中大型應用,如果不想犧牲數據完整性但是又希望保持高效率,那么你應該同時使用 RDB 和 AOF 兩種方式。
  • 如果你不打算耗費精力在這個地方,只需要保證數據完整性,那么優先考慮使用 AOF 方式。
  • RDB 方式非常適合大規模的數據恢復,如果業務對數據完整性和一致性要求不高,RDB 是很好的選擇。

備份 Redis 數據的建議

確保你的數據有完整的備份,磁盤故障、節點失效等問題可能讓你的數據消失不見, 不進行備份是非常危險的。

Redis 對于數據備份是非常友好的,因為你可以在服務器運行的時候對 RDB 文件進行復制:RDB 文件一旦被創建,就不會進行任何修改。

當服務器要創建一個新的 RDB 文件時,它先將文件的內容保存在一個臨時文件里面,當臨時文件寫入完畢時,程序才使用 rename(2) 原子地用臨時文件替換原來的 RDB 文件。

這也就是說,無論何時,復制 RDB 文件都是絕對安全的:

  • 創建一個定期任務( cron job ),每小時將一個 RDB 文件備份到一個文件夾,并且每天將一個 RDB 文件備份到另一個文件夾。
  • 確保快照的備份都帶有相應的日期和時間信息,每次執行定期任務腳本時,使用 Find 命令來刪除過期的快照:比如說你可以保留最近 48 小時內的每小時快照,還可以保留最近一兩個月的每日快照。
  • 至少每天一次,將 RDB 備份到你的數據中心之外,或者至少是備份到你運行 Redis 服務器的物理機器之外。

Redis 密碼持久化

在 Redis 中數據需要持久化,密碼也要持久化。在客戶端通過命令:

  1. config set requirepass zxc9527 

可以為 Redis 設置值為 zxc9527 的密碼,但是當 Redis 關閉并重新啟動后,權限驗證功能就會失效,再也不需要密碼。

所以,密碼也需要在 redis.conf 中持久化。打開 redis.conf 找到 requirepass 配置項,取消其注釋并在后面設置密碼:

  1. requirepass zxc9527 

 

保存后重啟 Redis 服務,密碼持久化即生效。

參考文章:

  • Redis 源碼剖析和注釋(十七)--- RDB 持久化機制
  • Redis 設計與實現
  • www.redis.cn/
  • Redis 兩種持久化方案 RDB 和 AOF 詳解
  • Redis 持久化的幾種方式
  • Redis 官方文檔

責任編輯:武曉燕 來源: 進擊的Coder
相關推薦

2020-03-03 14:15:49

Redis持久化數據庫

2020-10-20 10:31:13

JSGenerator協程

2022-06-13 09:26:41

Promise前端代碼

2019-06-14 14:58:58

虛擬文件系統Linux

2022-08-09 20:48:24

算力網絡運營商

2025-10-20 08:53:00

2025-02-14 08:53:24

2025-11-19 09:35:42

2016-01-11 11:50:39

JavaScript閉包面試題

2022-07-20 07:45:15

多線程程序性能

2013-05-14 10:41:16

Palo AltoNGFWUTM

2021-09-02 09:53:42

開發Redis配置

2022-08-18 08:08:56

TCP連通ECMP

2015-11-02 09:49:04

Android屏幕適配官方指導

2018-09-28 09:32:57

2016-12-20 10:55:52

深度學習

2019-05-05 06:08:17

DDoS網絡攻擊僵尸網絡

2022-01-13 15:31:14

Redis持久化配置

2023-12-26 07:33:45

Redis持久化COW

2017-01-19 17:57:47

大數據
點贊
收藏

51CTO技術棧公眾號

大陆极品少妇内射aaaaaa| 国产精品99久久99久久久二8| 免费欧美一级片| 蜜桃av在线| 国产亚洲污的网站| 亚洲va欧美va国产综合剧情| 国产在线综合网| 少妇精品久久久一区二区三区| 欧美日韩一区高清| av网站手机在线观看| 极品美乳网红视频免费在线观看 | 超碰免费在线97| 亚欧美中日韩视频| 欧美成人精品一区二区| 免费观看av网站| 国产极品一区| 樱桃国产成人精品视频| 日本精品一区二区三区高清 久久| 国产乱子伦精品无码码专区| 午夜在线一区| 欧美激情亚洲一区| 日本爱爱小视频| 在线日韩一区| 亚洲黄色av女优在线观看| 狠狠操狠狠干视频| 欧美性suv| 无码av免费一区二区三区试看| 9999在线观看| www在线免费观看| 91论坛在线播放| 风间由美一区二区三区| 亚洲图片在线播放| 麻豆久久精品| 91成人福利在线| 久久久久久久久精| 2023国产精品久久久精品双| 亚洲夜晚福利在线观看| 欧美深性狂猛ⅹxxx深喉 | 青草av在线| 国产精品卡一卡二卡三| 日本一区二区精品| 欧美精品少妇| wwwwww.欧美系列| 国产91一区二区三区| av免费在线不卡| 国产做a爰片久久毛片| 国产精品欧美一区二区| 波多野结衣黄色| 日韩和欧美一区二区| **欧美日韩vr在线| 免费在线不卡视频| 国产精品毛片| 奇米4444一区二区三区| 中国一级免费毛片| 美女久久一区| 国产精品美女www爽爽爽视频| 中文字幕在线天堂| 日韩极品在线观看| 国产精品久久久久久五月尺| 午夜视频网站在线观看| 日本欧美大码aⅴ在线播放| 日本精品视频在线| 成人黄色三级视频| 久久国产尿小便嘘嘘| 国产人妖伪娘一区91| 97国产精品久久久| 国产精品88888| 国产精品久久7| 青青青免费视频在线2| 国产午夜精品久久久久久免费视| 香蕉久久免费影视| 天天在线视频色| 一区二区三区av电影| 精品成在人线av无码免费看| 日本在线啊啊| 欧美视频在线不卡| 制服丝袜中文字幕第一页| 国产视频一区二| 日韩成人中文字幕| 国产又黄又粗的视频| 亚洲综合激情在线| 午夜精品免费视频| 国产精品高清无码| 国产综合一区二区| 国产视频一区二区不卡| 麻豆app在线观看| 中文字幕中文在线不卡住| 中文字幕在线中文| 北岛玲heyzo一区二区| 欧美日韩精品一区二区在线播放| 在线观看免费看片| 国产成人精品999在线观看| 色琪琪综合男人的天堂aⅴ视频| 欧美国产日韩在线观看成人| 99热这里只有精品8| 国产精品久久色| 亚洲国产精品suv| 国产日产欧美一区| 真人抽搐一进一出视频| 亚洲精品一区三区三区在线观看| 欧美一级在线免费| 天天躁日日躁aaaa视频| 中文字幕一区二区三区在线视频 | 亚洲人成在线一二| 手机在线免费看毛片| 国产精品毛片在线看| 91精品视频免费| 免费在线黄色网址| 亚洲一区二区综合| 亚洲小视频网站| 综合干狼人综合首页| 久久91精品国产91久久久| 国产熟妇一区二区三区四区| 国产成人av影院| 亚洲午夜精品久久| 超碰超碰人人人人精品| 日韩女优电影在线观看| 人成免费在线视频| 国产精品日韩| 国产精品xxx在线观看www| 免费在线观看黄| 在线免费不卡电影| 亚洲av无码一区二区三区网址 | 亚洲一区二区三区高清视频| 99视频国产精品| 91.com在线| 伊人久久大香| 最新日韩中文字幕| 中文字幕高清在线免费播放| 成人福利视频网站| 4444在线观看| 国产亚洲字幕| 久久国产精品99国产精| 一级黄色片免费看| 亚洲国产成人一区二区三区| 日本中文字幕片| 天堂av一区二区三区在线播放| 久久99久久99精品中文字幕| 国产一区二区麻豆| 中文字幕一区二区三区蜜月| 成人中文字幕av| 美女毛片一区二区三区四区| 8x海外华人永久免费日韩内陆视频 | 黄色片网站在线| 欧美日韩卡一卡二| 永久免费看片视频教学| 极品销魂美女一区二区三区| 亚洲欧洲一区二区| 欧美黑粗硬大| 久久亚洲国产成人| 国产欧美日韩成人| 亚洲激情自拍视频| 免费看三级黄色片| 伊人久久久大香线蕉综合直播| 97中文在线| 欧美1234区| 亚洲国产欧美一区二区三区同亚洲 | a在线免费观看| 日韩西西人体444www| 免费在线一区二区三区| 成人免费福利片| 午夜精品久久久久久久无码| 伊人春色之综合网| 国产精品中文久久久久久久| 黄色免费网站在线观看| 精品少妇一区二区三区| 国产午夜精品一区二区理论影院| 99久久精品国产毛片| 久久久久久久少妇| 欧美va久久久噜噜噜久久| 亚洲精品免费在线视频| 成年人视频免费在线播放| 亚洲精品www久久久久久广东| 6080午夜伦理| 国产精品久久午夜| 四虎国产精品免费| 久久大逼视频| 天天成人综合网| 成人av激情人伦小说| 国产精品成人免费电影| 九色porny在线| 日韩精品日韩在线观看| 中文字幕第31页| 亚洲精品美国一| 免费中文字幕av| 久久国产剧场电影| 91免费黄视频| 四季av一区二区三区免费观看| 亚洲xxxx在线| 性欧美超级视频| 欧美高清一级大片| 黄色片视频在线观看| 日韩午夜在线观看视频| 婷婷激情五月综合| 夜夜精品浪潮av一区二区三区| 国产中年熟女高潮大集合| 国产在线日韩欧美| 久久久久久久久久久免费视频| 图片小说视频色综合| 精品在线视频一区二区| 国产一区二区av在线| 日本精品久久中文字幕佐佐木| 成人影院在线观看| 国产亚洲免费的视频看| 国产黄色免费大片| 欧美三区在线视频| 中国一级免费毛片| 亚洲激情一二三区| 韩国一级黄色录像| 久久精品一区二区三区av| 亚洲精品乱码久久久久久蜜桃欧美| 三级影片在线观看欧美日韩一区二区| 日韩国产小视频| 欧美韩日一区| 欧美成人综合一区| ccyy激情综合| 亚洲qvod图片区电影| 国产成人精品一区二区三区免费| 97视频在线免费观看| 在线āv视频| 俺也去精品视频在线观看| 极品美乳网红视频免费在线观看 | 亚洲国产专区| 国产一二三四区在线观看| 久久影视一区| 亚洲国产精品久久久久久女王| 香蕉久久精品| 久久精品日产第一区二区三区乱码| 香蕉免费一区二区三区在线观看| 国产伊人精品在线| a屁视频一区二区三区四区| 日韩av第一页| 色在线视频观看| 91av在线网站| 国产在线88av| 69av在线视频| 国产在线精彩视频| 欧美一区二区三区免费观看| 9lporm自拍视频区在线| 性金发美女69hd大尺寸| 国产啊啊啊视频在线观看| 美乳少妇欧美精品| 色a资源在线| 欧美极品少妇xxxxⅹ免费视频| 综合图区亚洲| 久久久久久com| av福利在线导航| 91精品国产91久久久久久吃药| 九色porny丨国产首页在线| 91国内在线视频| 亚洲黄色中文字幕| 国产精品第8页| 青青青国产精品| 成人精品久久一区二区三区| 91麻豆精品| 99国产超薄肉色丝袜交足的后果| 亚洲不卡在线| 国内精品久久久久久久果冻传媒| 欧美精品密入口播放| 欧美日韩一区在线播放| 日韩国产一区二区| 国产女人18毛片| 精品白丝av| 99精品免费在线观看| 麻豆91在线播放免费| 99国产精品免费视频| 成人高清免费观看| 国产成人免费观看网站| 亚洲欧美综合网| 国产无套粉嫩白浆内谢| 岛国av一区二区在线在线观看| 波多野结衣午夜| 91精品福利在线一区二区三区| www.色日本| 亚洲人精品午夜在线观看| 人人干在线视频| 欧美激情一区二区三区久久久| 蜜臀国产一区| 亚洲v日韩v综合v精品v| 亚洲妇女av| 艳母动漫在线观看| 亚洲影视综合| 日本国产一级片| eeuss影院一区二区三区| 亚洲av成人无码久久精品| 亚洲精品少妇30p| 久久久精品视频网站| 717成人午夜免费福利电影| 亚洲 欧美 精品| 久久亚洲电影天堂| 日韩伦理精品| 成人网在线免费观看| 伊人久久综合影院| 一级性生活视频| 青青草国产精品亚洲专区无| 国产精品99久久久精品无码| 国产欧美一区二区三区鸳鸯浴 | 91杏吧porn蝌蚪| 一本大道久久a久久精品综合| 国产裸体无遮挡| 亚洲天堂男人的天堂| 国产三级伦理在线| 国产日韩换脸av一区在线观看| 加勒比中文字幕精品| 亚洲一区二区在线看| 国产深夜精品| 国产无套精品一区二区三区| 日本一区二区久久| 97免费在线观看视频| 91精品婷婷国产综合久久 | 国产伦理久久久久久妇女| 吴梦梦av在线| 美腿丝袜亚洲一区| 一区二区黄色片| 亚洲超碰精品一区二区| 国产农村老头老太视频| 深夜福利亚洲导航| 性感美女一区二区在线观看| 黑人中文字幕一区二区三区| 在线精品小视频| 亚洲免费av一区| 国产精品毛片久久久久久久| 岛国av中文字幕| 精品亚洲一区二区三区在线观看| 欧美xxxx少妇| 亚洲japanese制服美女| 亚洲国产成人精品女人| www.夜夜爽| 日本一区免费视频| 成年人视频免费| 亚洲女人天堂网| 中国字幕a在线看韩国电影| 国产一区精品视频| 亚洲每日更新| 久久人妻一区二区| 亚洲va韩国va欧美va精品| 国产成人自拍一区| 欧美激情2020午夜免费观看| 精品一区二区三区免费看| 日本特级黄色大片| 国内不卡的二区三区中文字幕 | 午夜欧美一区二区三区在线播放| 国产夫妻在线观看| 九九热这里只有精品6| 日韩中文字幕视频网| 黄色一级片av| 成人精品视频一区| 日本一区二区三区免费视频| 亚洲国产精品一区二区久| 黄色在线免费观看网站| 国产一区二区三区av在线 | 777一区二区| 亚洲免费在线观看视频| 国产成人精品无码高潮| 欧美国产日韩二区| 国产成人一二片| 国产精品333| 久久久精品欧美丰满| www.久久网| 操人视频在线观看欧美| 在这里有精品| 欧美韩国日本在线| 日本一区二区三区四区| 91美女精品网站| 欧美激情乱人伦| 伊人春色精品| 亚洲一二三av| 亚洲成人精品影院| 国产精品一二三区视频| www亚洲国产| 亚洲日本黄色| 公肉吊粗大爽色翁浪妇视频| 欧美日韩第一区日日骚| 污污视频在线| 久久久久一区二区| 青草av.久久免费一区| 小向美奈子av| 日韩av中文字幕在线免费观看| 欧美大片1688| 中文字幕在线乱| 91蝌蚪porny九色| 国产精品国产av| 91精品国产成人| 久久密一区二区三区| 亚洲成a人无码| 91福利视频久久久久| 怡红院av在线| 日本不卡在线观看| 国产精品一级在线| 国产精品久久久久久人| 久久久国产视频| 伊人久久大香线蕉av不卡| 91传媒视频在线播放| 国产探花精品一区二区| 欧美亚洲视频在线看网址| 成人影院在线| 欧美熟妇精品一区二区蜜桃视频| 欧美日韩免费一区二区三区| av日韩国产| 五月天男人天堂|