持久化机制:RDB与AOF

本文深入探讨了Redis的两种持久化机制:RDB快照和AOF日志。RDB通过全量备份内存数据实现快速恢复,但可能导致数据丢失;AOF记录所有写操作,虽确保数据完整性,但文件体积庞大。文章还介绍了AOF重写优化和混合持久化方案,以平衡性能与数据安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

持久化机制:RDB与AOF

快照RDB

RDB可能丢失数据,可以设置改1次key存一次,改10次,改1万次。RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来(操作系统会维护共享页面和修改后的分离页面),所以在快照持久化期间修改的数据不会被保存,可能丢失数据。

日志AOF

AOF不会丢失数据,但是数据多时文件很大,可以设置为改了就存、一秒存一次、不存几种策略。AOF存的是redis的顺序指令序列,长期运行的过程中AOF日志会变得很巨大,此时如果重放AOF日志会非常耗时。此时可以采取AOF重写,AOF重写就是开启一个子进程将内存遍历转换成一系列的redis操作指令序列化一个新的AOF日志文件中,然后再把转换期间的增量AOF日志追加到新的日志文件,然后替换原来的AOF文件即完成了AOF重写。写AOF文件时其实是写到一个内存缓存中然后异步地将脏数据刷新到磁盘,刷新频率一般为1s一次。

设置持久化的位置

RDB是遍历整个内存的操作,而AOF会降低redis性能,所以持久化一般发生在从节点(备份节点)进行,它没有来自客户端的压力。

混合持久化

redis4.0有一个混合持久化的方法,就是将RDB文件的内容和新增的AOF文件存在一起,这样既克服了AOF恢复慢,又克服了RDB容易丢失数据的缺点,redis重启时先加载RDB,后加载AOF,效率大幅度提升。

转载于:https://www.cnblogs.com/shizhuoping/p/11523758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值