Redis的基本工作原理 | 青训营

64 阅读3分钟

一:Redis实现数据持久化的基本工作原理:AOF/RDB 内存存储与RDB/AOF持久化

Redis作为内存数据库,将所有数据完全内存驻留,通过字典树结构组织数据和使用引用计数等技术优化内存使用。而持久化机制如RDB和AOF,是将内存数据以文件形式持久化到硬盘,实现数据断电后恢复功能。

单进程多线程架构

Redis采用单进程混合模式:主进程用于处理网络通讯及IO多路复用,每一个连接请求由主进程传给发任务给工作线程处理命令请求。避免多进程同步问题,提高吞吐量。

主从复制

借鉴主从模式,主服务器作为写节点负责接收客户端写请求和同步数据,从服务器作为读节点负责读请求处理和数据同步,实现读写分离,提高性能和容错能力。

发布订阅系统

借鉴pub/sub模型,发送者通过PUBLISH指令发送消息,订阅者通过SUBSCRIBE指令订阅频道后系统将匹配消息发送给订阅者,实现低影响的实时推送机制。

事件驱动式反应器

内核采用事件驱动模型,I/O多路复用技术批量处理连接,事件回调方式响应客户端命令请求,实现高并发低延时。 二:Redis的主从复制机制工作原理如下:

  1. 主服务器角色

主服务器用来处理客户端的写入操作,负责保存最新同步过的数据和状态。

  1. 从服务器角色

从服务器不接受客户端的读写请求,仅用于读或提供备份服务。

  1. 主从建立连接

从服务器通过命令对象(like SLAVEOF)将自己指定成主服务器的从机。主从服务器会建立TCP长连接,主服务器进行心跳机制维护连接。

  1. 主服务器同步数据

主服务器定期向从服务器同步部分内容修改的部分数据,包括:

  • DBSIZE:同步当前数据库大小信息
  • SELECT:选择同步哪个库
  • SYNC:同步数据库内的操作日志,从尾到头顺序应用
  • PSYNC:进行部分同步操作
  1. 从服务器持久化同步数据

从服务器基于自己持久化机制(如AOF日志),将主服务器同步过来的数据在本地进行持久化保存。

  1. 从服务器读请求处理

从服务器只接受读请求,不接受写请求。对读请求服务直接的本地缓存或者重新构建缓存。

  1. 主从切换

当主服务器不可用时,从服务器可以通过命令激活成主服务器接管服务,实现读写能力和高可用。

所以总体来说,主从复制通过主服务器定期同步数据变更到从服务器,实现了从服务器的数据备份和读能力的提升。可以做读写分离,也可以在主服务器故障时由从服务器瞬间替代提供服务。