Redis持久化AOF
1. AOF(Append only file)是什么?
以日志的形式来记录每个写操作(增量保存)
,将Redis执行过的所有写指令记录下来(读操作不记录
),只许追加文件但不可以改写文件
。redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容,将写指令从前到后执行一次以完成数据的恢复工作
2.AOF持久化流程
- 客户端的请求写命令会被append追加到AOF缓冲区内
- AOF 缓冲区根据AOF持久化策略【always,everysec,no】将操作sync同步到磁盘的AOF文件中
- AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩Aof文件容量(将流水账命令,整合为一条命令)
- reids服务重启时,会重新load加载aof文件中的写操作,达到数据恢复的目的
3. AOf和RDB同时开启,redis听谁的?
AOF和RDB同时开启,系统默认读取AOF的数据(数据不会存在丢失)
4. AOF文件异常修护
如果将aof文件中添加无关的字符,会导致启动redis时加载数据错误
[root@iZbp1htnoa70qlle394f3wZ bin]# reids-cli -p 3428 -bash: reids-cli: command not found
我们可以使用redis-check-aof --fix appendonly.aof
命令来修复aof文件
[root@iZbp1htnoa70qlle394f3wZ bin]# redis-check-aof --fix appendonly.aof 0x 93: Expected prefix '*', got: 'h' AOF analyzed: size=156, ok_up_to=147, diff=9 This will shrink the AOF from 156 bytes, with 9 bytes, to 147 bytes Continue? [y/N]: y Successfully truncated AOF
再次重启就不会报错了,并且数据加载正常
5. 优点
- 备份机制更稳健,丢失数据概率更低
- 可读的日志文本,通过操作AOF稳健,可以处理误操作。
6. 缺点
- 比起RDB占用更多的磁盘空间
- 恢复备份速度要慢
- 每次读写都要同步,有一定的性能压力
- 有BUG 造成恢复不能
7. 用哪个好?
- 官方推荐两个都启用
- 如果对数据不敏感,可以单独用RDB
- 不建议单独用AOF 因为可能会出现Bug
- 如果只是做纯内存缓存,可以都不用
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决