1. RDB持久化
兩種持久化方式:
- RDB 內存快照方式愉豺,類似與mysql的binlong
- AOF
Redis多個數據庫:
- 一個redis內部默認有16個數據庫棒掠,編號為0-15
- 默認操作是編號為0的數據庫
- 可以通過select命令切換數據庫
#切換為數據庫2
select 2
#查看redis的數據庫文件地址
127.0.0.1:6379> config get dir
1) "dir"
2) "/"
127.0.0.1:6379>
1.1 通過save命令實現(xiàn)持久化
- 客戶端發(fā)送save命令
- 服務器收到save命令后,會阻塞客戶端的請求
1.2 通過bgsave命令
- 可以在命令行觸發(fā)
- 命令行執(zhí)行bgsave莹弊,立即觸發(fā)執(zhí)行
- 可以通過服務器端條件觸發(fā)
- save seconds ops 即:在seconds秒內發(fā)生ops次數就會觸發(fā)RDB持久化操作
- Save 900 1 代表900秒內有一次數據變更操作就觸發(fā)持久化
- 可以同時配置多條觸發(fā)條件,如下圖:
save的默認參數
1.3 RDB配置項
- stop-writes-on-bgsave-error true 在bgsave執(zhí)行出錯時球恤,阻止前面的請求哀九,默認是true
- Rdbcompression yes 是否對RDB文件進行壓縮剿配,默認是yes
- rdbchecksum yes 是否對rdb文件進行校驗,默認是yes
1.4 RDB還原
- Redis會自動加載dump.rdb 文件
2. AOF持久化
- AOF即Append Only File 阅束,保存redis的執(zhí)行命令來記錄數據
- 重新加載是呼胚,通過重放這些命令來實現(xiàn)數據的回復
- 文件里面的目錄是純文本格式,可以直接打開查看
- 整個過程中只有一個文件息裸,通過重寫技術縮減此文件的大小
- 命令成功后才會寫入AOF文件
graph LR
A((客戶端))-->|發(fā)送命令|B[服務器]
B[服務器]-->|保存被執(zhí)行的命令|C[AOF文件]
2.1 AOF配置
############################## APPEND ONLY MODE ###############################
# 是否開啟AOF蝇更,默認關閉(no)
appendonly yes
# 指定 AOF 文件名
appendfilename appendonly.aof
# Redis支持三種不同的刷寫模式:
# appendfsync always #每次收到寫命令就立即強制寫入磁盤,是最有保證的完全的持久化呼盆,但速度也是最慢的年扩,一般不推薦使用。
appendfsync everysec #每秒鐘強制寫入磁盤一次访圃,在性能和持久化方面做了很好的折中厨幻,是受推薦的方式。
# appendfsync no #完全依賴OS的寫入腿时,一般為30秒左右一次况脆,性能最好但是持久化最沒有保證,不被推薦圈匆。
#在日志重寫時漠另,不進行命令追加操作,而只是將其放在緩沖區(qū)里跃赚,避免與命令的追加造成DISK IO上的沖突笆搓。
#設置為yes表示rewrite期間對新寫操作不fsync,暫時存在內存中,等rewrite完成后再寫入,默認為no
no-appendfsync-on-rewrite no
#當前AOF文件大小是上次日志重寫得到AOF文件大小的二倍時纬傲,自動啟動新的日志重寫過程满败。
auto-aof-rewrite-percentage 100
#當前AOF文件啟動新的日志重寫過程的最小值,避免剛剛啟動Reids時由于文件尺寸較小導致頻繁的重寫叹括。
auto-aof-rewrite-min-size 64mb
2.2 開啟AOF
首先找到redis.conf配置文件
Paste_Image.png
- 可以看到我的redis.conf在/etc/redis/6379.conf算墨,打開配置文件,找到appendonly配置汁雷,默認是no净嘀,改為yes
Paste_Image.png
- 修改dir目錄,這個目錄保存了rdb文件和aof文件的保存位置侠讯,默認是根目錄挖藏,這個不太好,我改到了redis的安裝目錄厢漩,新建了redisdata文件
- appendfsync 改為everysec 這是每秒鐘強制寫入磁盤一次的意思
- 改好后保存6379.conf膜眠,并重啟redis服務生效,打開redisdata目錄就可以看到dump.rdb文件和appendonly.aof,至此宵膨,aof開啟成功
Paste_Image.png
2.3 redis的AOF還原
- 設置appendonly yes架谎;
- 將appendonly.aof放到dir參數指定的目錄;
- 啟動Redis辟躏,Redis會自動加載appendonly.aof文件谷扣。
到這里,Redis的持久化部分就完成了捎琐。