redis 持久化
rdb持久化
1.redis的默认持久化方式
rdb持久化配置
1.dbfilename dump.rdb 设置rdb备份文件的名字
save 900 1 900秒发生一次写操作则备份一次
save 300 10 300秒发生一次写操作则备份一次
save 60 10000 一分钟发生1w次写操作,则备份一次
dir ./ 数据库文件保存的位置
stop-write-on-bgsave-error yes 表明持久化出错时,停止写文件, no表示出错后,继续写文件
rdbchecksum yes 表明写入或者读文件时,检查文件是否有损坏
快照分为手动和自动触发
手动触发:
save bgsave会生成快照
自动触发:
flushall时触发
shutdown时触发
主从全量复制时,触发
save m n 时, m秒n次时触发
aof持久化
aof持久化,将redis的每条写命令追加到磁盘的aof文件中,所以 aof持久化会稍微影响redis的性能,但性能的损耗,在可接受范围内
aof将每一条写操作,已redis通讯协议添加至缓冲区aof_buf,这样的好处是在大量的写入请求情况下,将缓冲区命令一次性写入文件,减少i/o次数,提高性能
同步命令到硬盘,everysec 定时,同步命令到硬盘,平衡cpu,及丢失时间较小
重写瘦身
手动触发:
客户端执行bgrewriteaof命令
自动触发:
aof配置
持久化过程:
fork子进程,对内存重写,且新写入的命令,写入aof_buf 也写入aof_write_buf
完成重写,用新的aof文件替换老的
aof配置参数:
auto-aof-rewrite-min-size 64mb
auto-aof-rewrite-percentage 100 每次在前一次执行的两倍后执行
appendfsync everysec 每秒刷新一次到磁盘
appendonly no 表示关闭aof
dir /etc/reids 存放路径
rdb-aof混合持久化
混合持久化是4.0版本以后的,默认是关闭的,通过aof-use-rdb-preamble配置参数控制 yes 表示开启
redis aof文件开头时rdb格式先加载rdb内容再加载剩余的aof
优缺点:
1.恢复快
2.占有空间小
3.提升性能
1.有版本限制
2.阅读性差