V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
BBCCBB
V2EX  ›  程序员

[求助 + 讨论] im 场景下, 如何快速查询出一个时间窗口内没有发过消息的会话呢?

  •  
  •   BBCCBB · Sep 1, 2020 · 1590 views
    This topic created in 2071 days ago, the information mentioned may be changed or developed.
    
    -- 会话
    session {
        id,
        status(结束, 未结束),
        time
    }
    
    -- 会话的消息
    msg {
        id,
        session_id
        time
    }
    

    现在有很多进行中的会话, 有啥好办法能快速查出最近一段时间窗口内没有发过消息的 session 呢?

    7 replies    2020-09-01 19:39:19 +08:00
    xuanbg
        1
    xuanbg  
       Sep 1, 2020
    session.time
    BBCCBB
        2
    BBCCBB  
    OP
       Sep 1, 2020
    @xuanbg session.time 的话我需要每发一个消息更新一下 session 上的一个时间字段吧?
    xuanbg
        3
    xuanbg  
       Sep 1, 2020
    @BBCCBB 会话本来就要更新最后一条消息的数据的呀。不然会话列表里面你怎么排序?如果要预览最新消息的话,你就做不到了呀。
    BBCCBB
        4
    BBCCBB  
    OP
       Sep 1, 2020
    @xuanbg 没问题老铁, 这是一个较好的方案, 但每次写 msg 都得更新一下 session 记录的数据, 对我们来说稍微有点重, 期待其他的办法, 感谢
    BBCCBB
        5
    BBCCBB  
    OP
       Sep 1, 2020
    append
    cloudzhou
        6
    cloudzhou  
       Sep 1, 2020
    @BBCCBB 就是需要一个 session.time 来记录,只是并不需要放在数据库,用 redis 然后最终同步到数据库,sorted set 很满足这种 *一个时间窗口 xxx* 的需求
    BBCCBB
        7
    BBCCBB  
    OP
       Sep 1, 2020
    @cloudzhou 这个的确是一个好办法, 但我们现在业务因为各种问题 redis 操作已经非常重了,害, 哈哈
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2485 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 01:09 · PVG 09:09 · LAX 18:09 · JFK 21:09
    ♥ Do have faith in what you're doing.