我有一个使用 Redis 排序集的活动提要系统。
事件发生,消息被放置到每个相关用户的排序集中,并带有分数的时间戳。
然后在用户登录时或通过推送(如果用户当前已登录)将消息分发给用户。
我想区分用户已“阅读”的消息和仍未阅读的消息。
据我了解,我不能只将“已读/未读”属性作为成员的一部分,因为更改它会导致成员不同,因此会再次添加,而不是替换当前成员。
所以,我在想的是,对于每个用户,我必须对集合进行排序——一个“未读”集合和一个“已读”集合。
- 当新事件出现时,它们被添加到“未读”集中
- 当用户阅读消息时,我将消息添加到已读集中,并将其从未读集中删除。
不太确定如何交付它们。例如,我不能将它们合并,因为我失去了已读/未读之间的区别,除非我反转未读分数的分数。
单独返回这两个集合(并将它们合并到代码中)会使分页变得困难。无论已读/未读状态如何,我都希望能够收到 20 条最新消息。
所以,问题:
- 读集/未读集是最好的方法吗?有没有更好的办法?
- 返回合并/联合数据子集的最佳方法是什么。
谢谢!