Redis學習 -- Redis持久化
- 一、RDB
-
- 1、什麼是RDB
- 2、怎麼使用RDB
- 3、RDB的觸發機制
- 4、RDB如何恢複資料
- 5、優缺點
- 二、AOF
-
- 1、什麼是AOF
- 2、AOF的配置
- 3、AOF的使用
一、RDB
1、什麼是RDB
RDB會在指定的時間間隔内将記憶體中的資料集 快照寫入磁盤,恢複時是将快照檔案直接讀到記憶體中。
RDB儲存的是 dump.rdb
2、怎麼使用RDB
Redis中是預設開啟RDB的,我們可以在配置檔案中看到RDB是如何生效的:
這裡我們可以看到,配置檔案中預設的,就是在900秒内如果有一個key的改動,就會寫入到rdb快照中,我們就來測一下:
我們發現,果然有了一個dump.rdb的檔案,說明已經持久化成功了。後期呢,我們可以根據自己的需要來自定義,比如說在 60s内有1000個key的改動,才會寫入RDB中等待。
然後呢,我們現在來模拟下,現在k1這個key已經持久化了,那麼我們這時将redis服務關停,然後再次啟動,模拟服務突然當機,看能否恢複資料?
現在我們已經關掉了redis,然後接着我們啟動redis:
現在啟動成功,那我們看下,redis中是否有k1這個資料呢?
我們發現,資料依然存在,說明持久化亦然生效!
3、RDB的觸發機制
觸發機制:
- 配置檔案中配置的save規則滿足的條件下,會自動觸發RDB
- 執行flushall指令來清空所有redis資料庫的資料時,也會觸發RDB: 這裡我們使用flushall清空了redis,然後我們看是否生成了dump.rdb檔案: 生成了!
- 關閉redis服務的時候,也會産生RDB檔案 我們使用shutdown關閉了redis服務,然後看是否生成了dump.rdb: 依舊生成了。
4、RDB如何恢複資料
很簡單,隻需要将rdb檔案放入我們redis的啟動目錄下就行,redis啟動的時候回自動檢查dump.rdb檔案,并恢複其中的資料。
那我們如何友善的檢視dump.rdb放置的位置呢?
127.0.0.1:6379> config get dir # 這個指令就可以檢視rdb檔案要放置的位置,下面傳回的/usr/local/bin目錄就是rdb檔案要放置的目錄
1) "dir"
2) "/usr/local/bin"
5、優缺點
優點:
- 适合大規模的資料恢複;
- 對資料的完整性要求不高。
缺點:
- 需要一定的時間間隔進行操作,如果redis意外當機了,這個最後一次修改的資料就會沒有;
- fork程序的時候,會占用一定的記憶體空間。
二、AOF
1、什麼是AOF
AOF就是将我們的所有操作都記錄下來,要恢複的時候使用這個檔案重新執行一遍。
以日志的形式來記錄每個寫操作,将Redis執行過的所有指令記錄下來(隻記錄寫操作)。
2、AOF的配置
我們一般用AOF的話,隻将appendonly改為yes,即開啟AOF即可。
3、AOF的使用
現在我們将上面說的那個配置改為yes,開啟AOF,并重新開機redis服務。
然後我們現在就在redis中寫入一些資料:
然後再打開那個aof檔案看下:
我們發現,aof已經記錄了我們的寫操作的指令了!
那如果這個aof檔案有損壞怎麼辦呢?
這時我們可以使用redis自帶的工具來修複aof檔案:
redis-check-aof --fix [要修改的檔案]