Redis是一種高階key-value資料庫。它跟memcached類似,不過資料可以持久化,而且支援的資料型態很豐富。
有字串,鍊錶,集 合和有序集合。支援在伺服器端計算集合的並,交和補集(difference)等,也支援多種排序功能。所以Redis也可以被看成是一個資料結構伺服器。 (建議學習:Redis影片教學)
Redis的所有資料都是保存在記憶體中,然後不定期的透過非同步方式儲存到磁碟上(這稱為「半持久化模式”);也可以把每一次資料變化都寫入到一個append only file(aof)裡面(這稱為「全持久化模式」)。
由於Redis的資料都存放在記憶體中,如果沒有配置持久化,redis重啟後資料就全遺失了,於是需要開啟redis的持久化功能,將資料保存到磁碟上,當redis重啟後,可以從磁碟中恢復資料。
redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在記憶體中的資料庫記錄定時dump到磁碟上的RDB持久化),另外一種是AOF(append only file)持久化(原理是將Reids的操作日誌以追加的方式寫入檔案)。
那麼這兩種持久化方式有什麼差別呢,改如何選擇呢?網路上看了大多數都是介紹這兩種方式怎麼配置,怎麼使用,就是沒有介紹二者的區別,在什麼應用場景下使用。
二者的差異
RDB持久化是指在指定的時間間隔內將記憶體中的資料集快照寫入磁碟,實際操作過程是fork一個子進程,先將資料集寫入臨時文件,寫入成功後,再替換之前的文件,用二進位壓縮儲存。
觸發條件
RDB持久化的觸發分為手動觸發和自動觸發兩種。
AOF持久化以日誌的形式記錄伺服器所處理的每一個寫入、刪除等變更操作,查詢操作不會記錄,以文字的方式記錄,可以開啟檔案看到詳細的操作記錄。 (append)
更多Redis相關技術文章,請造訪Redis入門教學欄位學習!
以上是redis是如何持久化的的詳細內容。更多資訊請關注PHP中文網其他相關文章!