1、Redis提供了哪些持久化機制: 1). RDB持久化: 該機制是指在指定的時間間隔內將內存中的數據集快照寫入磁盤。 2). AOF持久化: 該機制將以日誌的形式記錄服務器所處理的每個寫操做,在Redis服務器啓動之初會讀取該文件來從新構建數據庫,以保證啓動後數據庫中的數據是完整的。 3). 無持久化: 咱們能夠經過配置的方式禁用Redis服務器的持久化功能,這樣咱們就能夠將Redis視爲一個功能增強版的memcached了。 4). 同時應用AOF和RDB。redis 2、RDB機制的優點和劣勢: RDB存在哪些優點呢? 1). 一旦採用該方式,那麼你的整個Redis數據庫將只包含一個文件,這對於文件備份而言是很是完美的。好比,你可能打算每一個小時歸檔一次最近24小時的數據,同時還要天天歸檔一次最近30天的數據。經過這樣的備份策略,一旦系統出現災難性故障,咱們能夠很是容易的進行恢復。 2). 對於災難恢復而言,RDB是很是不錯的選擇。由於咱們能夠很是輕鬆的將一個單獨的文件壓縮後再轉移到其它存儲介質上。 3). 性能最大化。對於Redis的服務進程而言,在開始持久化時,它惟一須要作的只是fork出子進程,以後再由子進程完成這些持久化的工做,這樣就能夠極大的避免服務進程執行IO操做了。 4). 相比於AOF機制,若是數據集很大,RDB的啓動效率會更高。
RDB又存在哪些劣勢呢? 1). 若是你想保證數據的高可用性,即最大限度的避免數據丟失,那麼RDB將不是一個很好的選擇。由於系統一旦在定時持久化以前出現宕機現象,此前沒有來得及寫入磁盤的數據都將丟失。 2). 因爲RDB是經過fork子進程來協助完成數據持久化工做的,所以,若是當數據集較大時,可能會致使整個服務器中止服務幾百毫秒,甚至是1秒鐘。數據庫 3、AOF機制的優點和劣勢: AOF的優點有哪些呢? 1). 該機制能夠帶來更高的數據安全性,即數據持久性。Redis中提供了3中同步策略,即每秒同步、每修改同步和不一樣步。事實上,每秒同步也是異步完成的,其效率也是很是高的,所差的是一旦系統出現宕機現象,那麼這一秒鐘以內修改的數據將會丟失。而每修改同步,咱們能夠將其視爲同步持久化,即每次發生的數據變化都會被當即記錄到磁盤中。能夠預見,這種方式在效率上是最低的。至於無同步,無需多言,我想你們都能正確的理解它。 2). 因爲該機制對日誌文件的寫入操做採用的是append模式,所以在寫入過程當中即便出現宕機現象,也不會破壞日誌文件中已經存在的內容。然而若是咱們本次操做只是寫入了一半數據就出現了系統崩潰問題,不用擔憂,在Redis下一次啓動以前,咱們能夠經過redis-check-aof工具來幫助咱們解決數據一致性的問題。 3). 若是日誌過大,Redis能夠自動啓用rewrite機制。即Redis以append模式不斷的將修改數據寫入到老的磁盤文件中,同時Redis還會建立一個新的文件用於記錄此期間有哪些修改命令被執行。所以在進行rewrite切換時能夠更好的保證數據安全性。 4). AOF包含一個格式清晰、易於理解的日誌文件用於記錄全部的修改操做。事實上,咱們也能夠經過該文件完成數據的重建。
AOF的劣勢有哪些呢? 1). 對於相同數量的數據集而言,AOF文件一般要大於RDB文件。 2). 根據同步策略的不一樣,AOF在運行效率上每每會慢於RDB。總之,每秒同步策略的效率是比較高的,同步禁用策略的效率和RDB同樣高效。安全 4、其它: 1. Snapshotting: 缺省狀況下,Redis會將數據集的快照dump到dump.rdb文件中。此外,咱們也能夠經過配置文件來修改Redis服務器dump快照的頻率,在打開6379.conf文件以後,咱們搜索save,能夠看到下面的配置信息:服務器 #在900秒(15分鐘)以後,若是至少有1個key發生變化,則dump內存快照。 save 900 1微信 #在300秒(5分鐘)以後,若是至少有10個key發生變化,則dump內存快照。 save 300 10app #在60秒(1分鐘)以後,若是至少有10000個key發生變化,則dump內存快照。 save 60 10000 2. Dump快照的機制: 1). Redis先fork子進程。 2). 子進程將快照數據寫入到臨時RDB文件中。 3). 當子進程完成數據寫入操做後,再用臨時文件替換老的文件。
3. AOF文件: 上面已經屢次講過,RDB的快照定時dump機制沒法保證很好的數據持久性。若是咱們的應用確實很是關注此點,咱們能夠考慮使用Redis中的AOF機制。對於Redis服務器而言,其缺省的機制是RDB,若是須要使用AOF,則須要修改配置文件中的如下條目: 將appendonly no改成appendonly yes 從如今起,Redis在每一次接收到數據修改的命令以後,都會將其追加到AOF文件中。在Redis下一次從新啓動時,須要加載AOF文件中的信息來構建最新的數據到內存中。
4. AOF的配置: 在Redis的配置文件中存在三種同步方式,它們分別是: appendfsync always #每次有數據修改發生時都會寫入AOF文件。 appendfsync everysec #每秒鐘同步一次,該策略爲AOF的缺省策略。 appendfsync no #從不一樣步。高效可是數據不會被持久化。
5. 如何修復壞損的AOF文件: 1). 將現有已經壞損的AOF文件額外拷貝出來一份。 2). 執行"redis-check-aof--fix <filename>"命令來修復壞損的AOF文件。 3). 用修復後的AOF文件從新啓動Redis服務器。
6. Redis的數據備份: 在Redis中咱們能夠經過copy的方式在線備份正在運行的Redis數據文件。這是由於RDB文件一旦被生成以後就不會再被修改。Redis每次都是將最新的數據dump到一個臨時文件中,以後在利用rename函數原子性的將臨時文件更名爲原有的數據文件名。所以咱們能夠說,在任意時刻copy數據文件都是安全的和一致的。鑑於此,咱們就能夠經過建立cron job的方式定時備份Redis的數據文件,並將備份文件copy到安全的磁盤介質中。 異步 更多精彩內容請關注:http://bbs.superwu.cn memcached 關注超人學院微信二維碼:函數 |