Redis的持久化(八股)

持久化

从文件类型,文件恢复速度,安全性会进行区分。本质区别是RDB使用快照进行持久化,AOF是日志。

  • 文件类型:RDB生成的是二进制文件(快照),AOF生成的是文本文件(追加日志)
  • 安全性:缓存宕机的时候,RDB容易丢失较多的数据,AOF根据策略决定(默认的可以保证最多有一秒的丢失)
  • 文件恢复速度:由于RDB是二进制文件,所有恢复速度比AOF快。
  • 操作的开销:每一次RDB保存都是一次全量的保存,操作比较重,通常设置至少五分钟保存一次数据。而 AOF的刷盘是一次追加的操作,操作比较轻,通常设置策略为每一秒进行一次刷盘。

AOF的混合持久化方案:

  • AOF混合持久化方案会使用RDB持久化函数,将内存数据写入到新的AOF文件中(数据格式也是RDB格式)
  • 而重写期间新的写入命令追加到新的AOF文件仍然是AOF格式
  • 此时新的AOF文件就是由RDB格式和AOF格式组成的日志文件。

AOF的重写流程:

  • 子进程读取Redis DB中的数据以字符串命令的格式(也可以看作AOF文件格式)写入到AOF文件中
  • 如果有新数据,由主进程将数据写入到AOF重写缓冲区
  • 当子进程完成重写操作后,主进程通过管道将AOF重写缓冲区中的数据传输给子进程,然后子进程追击到AOF文件中。
相关推荐
coder阿龙1 小时前
基于SpringAI+Qdrant+Ollama本地模型和向量数据库开发问答和RAG检索
java·数据库·spring boot·ai·数据库开发
小小程序员.¥1 小时前
oracle--视图、序列、索引
服务器·数据库·oracle
fire-flyer1 小时前
ClickHouse系列(二):MergeTree 家族详解
大数据·数据库·clickhouse
Yana.nice1 小时前
MySQL 三大日志(redo log、undo log、binlog)的区别和作用
数据库·mysql
XDHCOM1 小时前
MySQL CASE WHEN语句应用实例:如何实现条件查询与数据转换?
数据库·mysql
Jul1en_1 小时前
【Redis】常用命令及定时器实现思想
数据库·redis·缓存
杰克尼1 小时前
redis(day02-短信登录)
数据库·redis·缓存
知识分享小能手1 小时前
MongoDB入门学习教程,从入门到精通,MongoDB的分片管理(17)
数据库·学习·mongodb
木下~learning1 小时前
MySQL 从入门到精通:安装、终端操作、远程连接与 C 语言 API 全教程
c语言·数据库·mysql
不会写DN1 小时前
如何设计应用层 ACK 来补充 TCP 的不足?
开发语言·网络·数据库·网络协议·tcp/ip·golang