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

2020-09-01 10:10:13 +08:00
 BBCCBB

-- 会话
session {
    id,
    status(结束, 未结束),
    time
}

-- 会话的消息
msg {
    id,
    session_id
    time
}

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

1222 次点击
所在节点    程序员
7 条回复
xuanbg
2020-09-01 10:20:09 +08:00
session.time
BBCCBB
2020-09-01 10:23:51 +08:00
@xuanbg session.time 的话我需要每发一个消息更新一下 session 上的一个时间字段吧?
xuanbg
2020-09-01 10:26:50 +08:00
@BBCCBB 会话本来就要更新最后一条消息的数据的呀。不然会话列表里面你怎么排序?如果要预览最新消息的话,你就做不到了呀。
BBCCBB
2020-09-01 10:41:43 +08:00
@xuanbg 没问题老铁, 这是一个较好的方案, 但每次写 msg 都得更新一下 session 记录的数据, 对我们来说稍微有点重, 期待其他的办法, 感谢
BBCCBB
2020-09-01 13:32:32 +08:00
append
cloudzhou
2020-09-01 19:23:43 +08:00
@BBCCBB 就是需要一个 session.time 来记录,只是并不需要放在数据库,用 redis 然后最终同步到数据库,sorted set 很满足这种 *一个时间窗口 xxx* 的需求
BBCCBB
2020-09-01 19:39:19 +08:00
@cloudzhou 这个的确是一个好办法, 但我们现在业务因为各种问题 redis 操作已经非常重了,害, 哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/703032

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX