1什麼是持久化?
就是把記憶體中的資料庫,儲存到磁碟上的過程就是持久化
2.redis的持久化?
redis的持久化就是把記憶體的資料儲存到磁碟上,當redis重啟時會把磁碟中的資料載入到記憶體中。
3.redis持久化的方式?
rdb: 把某段時間內的資料進行儲存,生成乙個快照。
aof: 把每次的修改指令 記錄到乙個日誌檔案中。
rdb:
在指定的時間間隔內將記憶體中的資料集快照寫入磁碟, 也就是行話講的snapshot快照,它恢復時是將快照檔案直接讀到記憶體裡
rdb原理:
redis會單獨建立(fork)乙個子程序來進行持久化,會先將資料寫入到 乙個臨時檔案中,待持久化過程都結束了,再用這個臨時檔案替換上次持久化好的檔案。 整個過程中,主程序是不進行任何io操作的,這就確保了極高的效能 如果需要進行大規模資料的恢復,且對於資料恢復的完整性不是非常敏感,那rdb方 式要比aof方式更加的高效。rdb的缺點是最後一次持久化後的資料可能丟失。
rdb什麼時候會被觸發
1.可以再配置檔案中設定
2.使用flushall命令來觸發,但是他儲存的快照內容是空的。
3.服務關閉也會觸發rdb.
優點:1.資料恢復速度快。
2.對於一些資料完整性要求不高,可以採用該持久化方式
缺點:在一定間隔時間做一次備份,所以如果redis意外down掉的話,就 會丟失最後一次快照後的所有修改
aof:
原理:以日誌的形式來記錄每個寫操作,將redis執行過的所有寫指令記錄下來(讀操作不記錄),
只許追加檔案但不可以改寫檔案,redis啟動之初會讀取該檔案重新構建資料,換言之,redis
重啟的話就根據日誌檔案的內容將寫指令從前到後執行一次以完成資料的恢復工作
預設redis沒有開啟aof。
aof的觸發條件:
always: 總是觸發 沒執行一條修改語句都會觸發。
everysec: 每秒觸發一次 會丟失最後一秒的資料。
no: 不觸發 效能就和rdb一樣。
如果aof被開啟了,那麼redis服務再啟動時先載入aof的檔案。因為aof的資料比較完整。
如果aof檔案被破壞 那麼可以使用
redis-check-aop --fix 檔名
優點:
相同資料集的資料而言aof檔案要遠大於rdb檔案,恢復速度慢於rdb
aof執行效率要慢於rdb,每秒同步策略效率較好,不同步效率和rdb相同
redis持久化 AOF持久化
1.aof持久化原理 aof持久化會將被執行的寫命令寫到aof檔案的末尾。在恢復的時候,redis只要從頭到尾重新執行一次aof檔案包含的所有寫命令 2.配置選項 固態硬碟禁用always選項,在某些情況頻繁讀寫會大大降低固態硬碟的壽命 4.aof檔案的重寫和壓縮 aof檔案裡面記錄了所有的命令而不...
Redis的持久化
我們都知道,redis的資料都是儲存在記憶體裡面的,導致了redis有如下特點 1.由於記憶體的容量較小,並且速度很快,所以redis相對於mysql orcle等資料庫相比,儲存的容量較小,但是io速度特別快。2.由於記憶體的臨時儲存性,在機器斷電之後記憶體裡的內容將會丟失,若redis沒有持久化...
redis的持久化
redis有兩種持久化策略 rdb 是redis的預設持久化級制。相當於照快照,儲存的是一種狀態。優點 快照速度極快 還原資料速度極快 適用於災難備份 缺點 小記憶體機器不適合,適用於記憶體充裕的計算機 rdb機制符合要求就會找快照 隨時啟動,會突然的占用一部分系統資源 伺服器正常關閉 key滿足一...