跳过正文
  1. 全部/
  2. 笔记/
  3. 项目/
  4. 后端项目/

定时推送

目录

Pasted image 20260504172720.png
核心思路:​

  1. 定时临时缓冲区:预设一个定时消息临时缓冲区,所有定时消息先在临时缓冲区暂存,做定时处理。等定时缓冲区的消息到点之后再捞出。​
  2. 到点消息变为普通消息:捞出的【到点消息】将其变为一条【普通消息】,进行后续推送流程。此流程与直接推送普通消息一致。
字段类型约束/默认值说明
idbigint(20)主键,自增ID
msg_idvarchar(256)非空,唯一索引(idx_msgid)消息ID
reqvarchar(4096)非空请求内容
send_timestampbigint(10)定时发送时间
statusint(10)状态
create_timedatetime非空,默认 CURRENT_TIMESTAMP创建时间
modify_timedatetime非空,默认 CURRENT_TIMESTAMP,更新时自动刷新修改时间

Redis选型设计
#

存储介质选型上选择使用 Redis ZSet,以定时任务执行时间为 Score 进行有序结构的搭建,当定时任务数量达到一定量级时,ZSet 底层基于跳表作为有序表的实现. 一些更细致的实现流程如下:​

(1)以 Redis ZSet 作为存储介质;​ (2)每次添加定时任务时,执行 ZAdd 动作,以执行时间的【时间戳】为排序的键(Score) 进行有序结构的搭建;同时元素的值我们也用时间戳,这样保证同一时间点只会存储一份信息。

Reply by Email