redis基础——AOF持久化

  1. AOF持久化

AOF是通过保存redis服务器每次所执行的写命令来记录数据库状态

 AOF持久化的实现

分为命令追加(append)、文件写入、文件同步(sync)三个步骤

 命令追加:

 AOF文件的写入与同步

AOF文件的载入与数据还原

 Redis读取AOF文件并还原数据库的步骤如下:

AOF重写

  通过这个功能可以减小AOF文件的大小,减少冗余命令的写入

 AOF重写的实现:

  AOF后台重写(子进程):

因为存在一个AOF重写缓冲区记录了所有的写操作,所以不害怕存在不一致,只需要最后进行一次比对写入就可以了

 最后服务器用新AOF文件替换旧文件,完成重写

  1. 事件

Redis是一个事件驱动程序,主要处理两类事件:

文件事件:

文件事件处理器的构成

套接字准备好执行一些操作,每个套接字都会产生一个文件事件,一个服务器会连接多个套接字,所以可能会出现多个并发文件事件

I/O多路复用程序负责监听多个套接字并向文件事件分派器传送相应的套接字(通过队列每次分派一个套接字)

文件事件分派器接受到套接字之后,根据套接字产生的文件事件类型,调用相应的事件处理器

服务器会为执行不同任务的套接字关联不同的事件处理器

I/O多路复用程序的实现

 

程序会在编译时自动选择性能最高的函数

  事件的类型

  文件事件的处理器

  1. 连接应答处理器

  1. 命令请求处理器

  1. 命令回复处理器

时间事件

目前redis只有周期性事件,没有定时事件

 实现

 时间时间的应用实例:serverCron函数

这个函数以周期性运转来进行这些工作
事件的调度与执行(决定处理事件的种类和方式)

规则如下:

例如下图:

在处理时间事件之前,已经处理了两个文件事件

处理时间事件的时间比预定的100ms满了30ms,因为不会出现抢占,所以只能等前面的结束

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值