學習筆記——多執行緒及執行緒加鎖
RDB 持久化方式能夠在指定的時間間隔能對你的資料進行快照儲存。
AOF 持久化方式記錄每次對伺服器寫的操作,當伺服器重啟的時候會重新執行這些命令來恢復原始的資料,AOF 命 令以 redis 協議追加儲存每次寫的操作到檔案末尾.Redis 還能對 AOF 檔案進行後臺重寫,使得 AOF 檔案的體積不至於過大。
如果只希望資料在伺服器執行的時候存在,也可以不使用任何持久化方式。
如果同時開啟兩種持久化方式,在這種情況下,當 redis 重啟的時候會優先載入 AOF 檔案來恢復原始的資料, 因為在通常情況下 AOF 檔案儲存的資料集要比 RDB 檔案儲存的資料集要完整。
1、RDB持久化:每過一段時間,將記憶體中的資料集寫入磁碟。
Redis會單獨建立一個子執行緒來進行持久化,會先將資料寫入一個臨時檔案,當所有資料持久化結束後,再用這個臨時檔案替換之前持久化完成的檔案。整個過程主程序沒有進行I/O操作,所以效率極高。
儲存策略:900 1 900 秒內如果至少有 1 個 key 的值變化,則儲存
300 10 300 秒內如果至少有 10 個 key 的值變化,則儲存
60 10000 60 秒內如果至 10000 個 key 的值變化,則儲存
2、AOF持久化:通過日誌方式記錄每個更新操作
Redis重新啟動時會讀取這個檔案,重新執行新建,修改資料的命令來恢復資料。
儲存策略:appendfsync always 每產生一條新的修改命令都要執行儲存操作,效率低,安全。
appendfsync everysec 每一秒儲存一次
appendfsync no 不執行儲存操作,將資料交給系統處理,更快,但不安全。
缺點:1、比起RDB佔用更多的磁碟空間
2、每次讀寫都同步,有一定效能壓力
3、恢復速度慢
4、存在一定bug,可能造成資料無法恢復