redis持久化之RDB和AOF比较

Redis的持久化包括RDB和AOF两种方式。RDB在指定时间间隔保存内存快照,适合数据备份,但可能丢失部分数据;AOF记录所有写操作日志,确保数据安全,但文件体积大,恢复速度慢。AOF有同步写回策略,包括always、everysec和no。根据数据安全性需求,可以选择混用RDB和AOF,或者单独使用RDB或AOF并调整写回策略。
摘要由CSDN通过智能技术生成

名词解释

1)持久化——将数据从内存保存到磁盘中的动作
2)RDB——在指定时间间隔内,执行指定次数的写操作,将内存数据写入磁盘。
3)AOF——以追加的方式记录redis操作日志的文件,在服务器启动时,重新执行这些命令来还原数据集。

优缺点比较

RDB

1)RDB持久化,是指在指定的时间间隔内,执行指定次数的写操作,将内存中的数据集快照写入磁盘中,它是Redis默认的持久化方式。执行完操作后,在指定目录下会生成一个dump.rdb文件,Redis重启的时候,通过加载dump.rdb文件来恢复数据。
2)存储的是二进制文件,传输较快,适用于备份。
3)redis默认使用RDB持久化方式。
4)主从复制依赖于RDB持久化方式。

缺点是,设置时间间隔的写入操作会使部分操作未达到“快照”要求,没有进行持久化,部分数据丢失。
例如,在配置文件中设置如下参数
save 900 10
900秒内,有十个写操作,才会快照备份,进行持久化。

AOF

1)AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作。可以最大程度保证数据安全。
2)AOF是执行完命令才记录日志。如果先记录日志,命令可能会有语法错误,日志就记录错误的命令,用日志恢复数据时也出错。
3)执行完命令再记录日志,不会阻塞当前的写操作,但会阻塞下一个操作。
4)随着AOF文件增大影响系统性能,AOF的重写机制会将过期、无效、冗余命令合并为一个命令,压缩空间,由后台子进程执行。

缺点是
1)由于要记录所有的写操作,日志记录量很大。
2)如果执行完命令还没有记录日志,数据会丢失。
3)相同的数据集,AOF文件体积大于RDB文件。数据恢复也比较慢。

因此AOF有三种写回策略(appendfsync)。

—always 同步写回,每个子命令执行完,会立即写到日志。
—everysec 每个命令执行完,只是先把日志写到AOF内存缓冲区,每隔一秒同步到磁盘。
—no 只是先把日志写到AOF内存缓冲区,由操作系统去决定何时写入磁盘。

实际选择

1)如果数据不能丢失,RDB和AOF混用
2)如果只作为缓存使用,可以承受几分钟的数据丢失的话,可以只使用RDB。
3)如果只使用AOF,优先使用everysec的写回策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值