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文件