Redis如何保证持久化

redis通过两种方式RDB,AOF进行持久化。
redis 默认开启rdb,关闭aof。可以都开启,但是aof的优先级会比rdb更高一些。
RDB:
时间段内缓存中的记录写入磁盘。
流程:
1.redis会单独创建fork
2.满足rdb触发条件后。数据写入临时文件dump.rdb
3.新的dump.rdb文件会覆盖原来的dump.rdb文件。
fork:与原进程的数据保持一致,是一个全新过程,新进程会作为原进程的子进程。
rdb快照的配置策略:
三种情况下会触发rdb。
900S(15min)之内key发生了一次改变。
300S(5min)之内key发生了十次改变。
60S(1min)之内key发生了一万次改变。
如果使用save命令,会立即触发rdb
同时使用flushall也会触发rdb,生成一个空的dump.rdb文件
可以通过在副计算机上放一个dump.rdb的复制文件保证数据不会丢失。
stop-writer-on-bgsave-err. 默认yes(开启),代表save后出错,立马停止操作。改为No的话,不会保证数据一致性。
rdbcompress. 文件会随着操作越来越大,用LZF算法进行文件压缩,默认YES。
RDB的优势: 适合大规模数据恢复。对数据前后一致性要求不是很高。
劣势:因为是时间段复制,如果最后一个时间段发生问题,那么最后一次的数据不会被写入文件中。Fork复制命令保存到dump文件,对内存消耗较大(2倍膨胀)。
AOF:
以日志的形式,记录下每一条写操作,包括get。并且将新的指令append到日志文件的末尾,只能追加,不可更改,默认aof是关闭的。
当aof开启后,启动redis,会自动创建一个appendonly.aof文件,重启redis后,读取文件。 (flushall指令也会被写入到文件中)
aof文件的修复指令,redis-check-aof --fix.appendonly.aof
文件配置:
appendonly 默认no 代表aof的关闭。‘
append file name 临时文件名称 默认appendonly.aof
追写策略(appendfsync)
1.always 每一条记录都写入磁盘。
2.everysec 一秒内发生操作,写入磁盘,异步操作(默认)。
3.no 不写入磁盘
auto-aof-rewrite-min-size 默认大小64M
auto-aof-rewrite-percentage:设置基准值100%(2倍)。
rewrite:
随着append的越来越多,文件越来越大,当文件满足条件大小大于64M并且当前文件大小是上次重写文件大小的2倍,就将文件重写。
优点:追加策略灵活。
缺点:相同数据集,aof文件大小大于rdb。
aof文件的效率 低于rdb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值