1、修改stop-writes-on-bgsave-error為no
當前配置為yes,分別修改redis.conf和當前實例
#redis.conf
stop-writes-on-bgsave-error no
#登陸redis執行
config set stop-writes-on-bgsave-error no
查看
config get stop-writes-on-bgsave-error
此參數設置為no,可以避免MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk。
2、開啟appendonly
當前配置為appendonly no,即禁用了appendonly功能,這樣的風險是一旦redis實例crash,重啟后只能恢復到最近1次快照(即bgsave產生的rdb文件),可能會丟失很長時間的數據。
appendonly可以實現准實時刷盤,默認每1s將數據追加到磁盤文件,也可以配置成每次修改都刷盤,當redis crash時最大限度的保證數據完整性。
修改redis.conf和當前實例
#redis.conf
appendonly yes
appendfsync everysec
#登陸redis執行
config set appendonly yes
config get appendonly
同時需要設置no-appendfsync-on-rewrite yes
這兩個參數可以確保redis每1分鍾刷盤一次,也可以設置appendfsync always,即每次寫都實時刷盤,避免redis crash造成數據丟失
3、添加最大內存閾值maxmemory
此參數限制redis可以占有的最大內存,一旦超出便淘汰過期key,可以避免因內存不足觸發OOM。
這個參數和實際部署環境有關,要根據實際情況指定參數值,比如3G或者4G。
參考配置
maxmemory 3G
maxmemory-policy volatile-lru
maxmemory-samples 5
此參數可以避免redis過度占用機器內存,避免因內存不足導致的各種錯誤