該文轉載自:http://www.cnblogs.com/swyi/p/6093763.htmlhtml
Redis是一種高級key-value數據庫。它跟memcached相似,不過數據能夠持久化,並且支持的數據類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務器端計算集合的並,交和補集(difference)等,還支持多種排序功能。因此Redis也能夠被當作是一個數據結構服務 器。
Redis的全部數據都是保存在內存中,而後不按期的經過異步方式保存到磁盤上(這稱爲「半持久化模式」);也能夠把每一次數據變化都寫入到一個append only file(aof)裏面(這稱爲「全持久化模式」)。redis
第一種方法filesnapshotting:默認redis是會以快照的形式將數據持久化到磁盤的(一個二進 制文件,dump.rdb,這個文件名字能夠指定),在配置文件中的格式是:save N M表示在N秒以內,redis至少發生M次修改則redis抓快照到磁盤。固然咱們也能夠手動執行save或者bgsave(異步)作快照。數據庫
工做原理簡單介紹一下:當redis須要作持久化時,redis會fork一個子進程;子進程將數據寫到磁盤上一個臨時RDB文件中;當子進程完成寫臨時文件後,將原來的RDB替換掉,這樣的好處就是能夠copy-on-write服務器
第二種方法Append-only:filesnapshotting方法在redis異常死掉時, 最近的數據會丟失(丟失數據的多少視你save策略的配置),因此這是它最大的缺點,當業務量很大時,丟失的數據是不少的。Append-only方法可 以作到所有數據不丟失,但redis的性能就要差些。AOF就能夠作到全程持久化,只須要在配置文件中開啓(默認是no),appendonly yes開啓AOF以後,redis每執行一個修改數據的命令,都會把它添加到aof文件中,當redis重啓時,將會讀取AOF文件進行「重放」以恢復到 redis關閉前的最後時刻。數據結構