redis的兩種持久化方式,快照和只追加文件(aof),快照保存數據,AOF保存每次執行的命令。
配置文件中的dir 選項指定了快照文件和aof文件的保存位置。
【快照】
快照持久化的命令:bgsave和save,通過save命令執行時不會創建子線程爭搶資源。
配置文件:
save 60 1000 #60s內1000次操作觸發快照保存
stop-writes-on-bgsave-error no #保存快照失敗後是否繼續執行寫命令
rdbcompression yes # 是否對快照文件壓縮
dbfilename dump.rdb # 快照文件名
快照保存數據時,如果系統發生崩潰。最近一次生成快照到崩潰時間內的數據將會被丟失。
【AOF】
配置文件:
appendonly no # 是否使用AOF進行持久化
appendfsync always /everysec /no # 選擇每條命令寫入硬盤,或每秒同步一次, 或由操作系統決定何時進行同步(系統崩潰時會丟失不定量的數據,以及寫入操作不夠快時寫入操作可能被阻塞)推薦使用everysec
no-appendfsync-on-rewrite no # 重寫aof文件時不會丟失數據,會導致阻塞。爲yes時相當於appendfsync設置爲no,不執行磁盤操作而是寫入緩存區,有數據丟失的風險。
# 當aof文件體積大於64MB並且aof文件體積比上一次重寫之後體積大了100%以上的時候,redis執行GBREWRITEAOF命令
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
解決aof文件冗餘的問題可以通過手動執行BGREWRITEAOF進行重寫aof文件