代码之家  ›  专栏  ›  技术社区  ›  Muhammad Umer

如何检测用户是否离开Redis发布/订阅频道?

  •  0
  • Muhammad Umer  · 技术社区  · 6 年前

    我有多个应用程序运行实例。每个实例都有用户在实例间互相聊天。我需要显示用户是否离线。如果实例崩溃,则不会发生这种情况。当实例处于活动状态时,我可以通过websocket获取该套接字的连接丢失事件,并通知其他实例。但如果应用实例崩溃,就不会发生这种情况。

    1 回复  |  直到 6 年前
        1
  •  1
  •   for_stack    6 年前

    你可以用 CLIENT LIST 为了达到目标。此命令列出所有连接到Redis的客户端的信息。以下是由显示的客户端信息的示例 客户名单 :

    id=87 addr=127.0.0.1:63950 fd=10 name= age=3 idle=3 flags=P db=0 sub=3 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe
    
    1. 如果客户端崩溃或关闭连接,Redis会将其从客户端列表中删除,并且您无法获取 添加 客户名单 命令。
    2. 如果客户端正在订阅/订阅一个或多个频道/模式,则 命令 客户信息字段将是 订阅 PSU订阅 附属的 / psub公司 field是它订阅的频道/模式的数量。
    3. 如果客户端取消订阅/punsbsubscribe所有频道/模式,并且正在向Redis发送其他命令,则 命令 client info的字段将是它发送到Redis的最后一个命令,并且 附属的 / psub公司

    为了找出哪个订户离开了,你可以定期打电话