redis是一種高級key-value數(shù)據(jù)庫。它跟memcached類似,不過數(shù)據(jù)可以持久化,而且支持的數(shù)據(jù)類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務(wù)器端計算集合的并,交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數(shù)據(jù)結(jié)構(gòu)服務(wù) 器。
Redis的所有數(shù)據(jù)都是保存在內(nèi)存中,然后不定期的通過異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數(shù)據(jù)變化都寫入到一個append only file(aof)里面(這稱為“全持久化模式”)。?
由于Redis的數(shù)據(jù)都存放在內(nèi)存中,如果沒有配置持久化,redis重啟后數(shù)據(jù)就全丟失了,于是需要開啟redis的持久化功能,將數(shù)據(jù)保存到磁盤上,當redis重啟后,可以從磁盤中恢復數(shù)據(jù)。redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在內(nèi)存中的數(shù)據(jù)庫記錄定時dump到磁盤上的RDB持久化),另外一種是AOF(append only file)持久化(原理是將Reids的操作日志以追加的方式寫入文件)。
Redis跟memcache不同的是,儲存在Redis中的數(shù)據(jù)是持久化的,斷電或重啟后,數(shù)據(jù)也不會丟失。因為Redis的存儲分為內(nèi)存存儲、磁盤存儲和log文件三部分,重啟后,Redis可以從磁盤重新將數(shù)據(jù)加載到內(nèi)存中,這些可以通過配置文件對其進行配置,正因為這樣,Redis才能實現(xiàn)持久化。