Redis 做 MySQL 缓存,消息系统及时更新

初步设想:

业务服务器数据更新流程:

业务服务器 ——(2)—-
| ^ |
| | |
| (6) v
(1) | Redis 消息发布 <–消息 RedisDB–> Redis 消息订阅
| | ^
| | | (3)
| 缓存 Redis DB <—-(5)—- 数据同步服务器
| | |
v | |
MySQL 数据库 ——-(4)—->——–<—-(4)—–

业务服务器数据载入流程:

业务服务器 <———————–
| ^ —— | | (3)
| | | | |
(1) | | | v
| (2) | | Redis 消息发布 <–消息 RedisDB–> Redis 消息订阅
| | | (5) ^
v | (4) | |
Redis 缓存数据库 | | 数据回写服务器
————- |
| |
v |
MySQL 数据库 ————

需求:业务服务器有数据需要更新

  1. 业务服务器和数据同步服务器均开启一个连接,到一个负责专门传递消息的 Redis。
  2. 业务服数据的读取一部分来自 Redis 缓存库,一部分来自直接读取 MySQL。
  3. 业务服务器负责发布,同步服务器负责订阅
  4. 订阅服务器根据频道或者消息体内标记来解析如何处理 MySQL 向 Redis 的同步工作,如何解析数据结构等
  5. 一旦确定需要同步的内容,由数据同步服务器向 MySQL 读取数据,并转换成指定的数据结构,存储在 Redis 缓存数据库中

需求:业务服务器需要查询数据

  1. 向 Redis 请求数据查询
  2. 如果 Redis 中存在该缓存数据,直接返回,查询成功
  3. 如果 Redis 中不存在该缓存数据,向 MySQL 发起查询请求
  4. MySQL 中存在该数据,返回查询成功
Donate - Support to make this site better.
捐助 - 支持我让我做得更好.