redis是一種高級key-value數(shù)據(jù)庫。它跟memcached類似,不過數(shù)據(jù)可以持久化,而且支持的數(shù)據(jù)類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務(wù)器端計算集合的并,交和補集(difference)等,還支持多種排序功能。所以redis也可以被看成是一個數(shù)據(jù)結(jié)構(gòu)服務(wù) 器。
什么是redis持久化?
Redis的所有數(shù)據(jù)都是保存在內(nèi)存中,redis崩掉的話,會丟失。Redis持久化就是把數(shù)據(jù)保存到磁盤上(可永久保存的存儲設(shè)備中),以便數(shù)據(jù)恢復(fù)。(推薦學習:Redis視頻教程)
redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在內(nèi)存中的數(shù)據(jù)庫記錄定時dump到磁盤上的RDB持久化),另外一種是AOF(append only file)持久化(原理是將Reids的操作日志以追加的方式寫入文件)。
RDB持久化是指在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤,實際操作過程是fork一個子進程,先將數(shù)據(jù)集寫入臨時文件,寫入成功后,再替換之前的文件,用二進制壓縮存儲。
AOF持久化以日志的形式記錄服務(wù)器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細的操作記錄。
持久化的實現(xiàn)方式
● 快照方式
對數(shù)據(jù)在某時某點的一種完整備份。例如Redis RDB,mysql Dump都是這種方式。
● 寫日志方式
任何數(shù)據(jù)的更新都記錄在日志當中,某個時候要進行數(shù)據(jù)的恢復(fù)時,重走一遍日志的完整過程。例如MySQL的Binlog,hbase的HLog和Redis的AOF,就是這種方式。
更多redis相關(guān)技術(shù)知識,請訪問Redis視頻教程欄目學習!