Redis之持久化

意义

数据恢复、备份

方法

Redis提供了两种持久化方法——RDB和AOF

RDB

思路:快照,保存数据库中的键值对到文件
实现:阻塞和非阻塞两种方式

  • 阻塞:服务进程执行持久化操作,持久化期间,服务器不能处理任何命令请求
  • 非阻塞:服务进程派生的子进程执行持久化操作,持久化期间,服务器仍然能处理命令请求
    进程而不是线程,避免持久化与请求之间的互斥问题,但是持久化期间,内存会加倍

问题:两次持久化之间的数据可能丢失

AOF(Append-Only-File)

思路:保存写命令到文件
实现:服务进程先保存写命令,然后再执行写命令
问题:AOF文件体积膨胀的问题

AOF重写

思路:创建新的AOF文件来替代现有的AOF文件

  • 读取当前的数据库状态
  • 非阻塞:服务进程派生的子进程执行重写操作,而不是服务进程
    进程而不是线程,避免重写与请求之间的互斥问题
  • 重写缓冲区:服务进程派生子进程之后,同时保存写命令到文件和重写缓冲区
  • 阻塞:子进程完成重写操作之后,向服务进程发送信号,服务进程先将重写缓冲区中的内容写入到新的AOF文件,然后再替换现有的AOF文件
其它思路

思路1:创建新的AOF文件来替代现有的AOF文件

  • 读取当前的数据库状态
  • 阻塞:服务进程执行重写操作

思路2:创建新的AOF文件来替代现有的AOF文件

  • 分析现有的AOF文件(先拷贝再分析)
  • 非阻塞:服务进程派生的子进程执行重写操作

思路3:创建新的AOF文件来替代现有的AOF文件

  • 分析现有的AOF文件
  • 阻塞:服务进程执行重写操作

思路4:AOF文件按时间或者大小进行组织,重写通过不断合并旧的AOF文件来实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值