Redis客户端列表在连接新客户端或客户端断开连接时通知

时间:2019-08-09 10:15:01

标签: redis

我在Redis上有一个工作队列和一个完成列表,生产者在其中推送工作,消费者在听。

  • 收到新消息时,消费者将弹出优先级较高的作业。
  • 当使用者弹出任务时,它将使用自己的ID更新完成列表上的任务,以告知系统正在处理该任务。
  • 消费者完成工作后,将从工作表中删除该工作 完成列表。
  • 当客户端在完成作业之前关闭时,它将作业以更高的优先级推回到作业队列中。

这很好。但是,它不能处理客户端收到SIGKILL的情况,例如当OOM杀手决定您的进程需要终止时。

因此,我决定通过检测客户端断开连接来使其更具弹性。

  • 当客户端断开连接时,其作业将被推回队列。

最简单的方法是订阅client list通知,因为我假设如果一个客户端失去与Redis的连接,它将无法充分执行,最好让其他客户端完成任务。在redis上可能吗?我避免每X秒扫描一次客户端列表。另一种方法是让客户端经常在Redis上更新自己的会话超时并监听超时通知,但是如果我只想观察断开连接,那将变得更加简单。

我尝试过的事情:

我尝试订阅键空间事件,但是找不到订阅客户端列表键的方法。

0 个答案:

没有答案