4

我有一个使用 Redis 排序集的活动提要系统。

事件发生,消息被放置到每个相关用户的排序集中,并带有分数的时间戳。

然后在用户登录时或通过推送(如果用户当前已登录)将消息分发给用户。

我想区分用户已“阅读”的消息和仍未阅读的消息。

据我了解,我不能只将“已读/未读”属性作为成员的一部分,因为更改它会导致成员不同,因此会再次添加,而不是替换当前成员。

所以,我在想的是,对于每个用户,我必须对集合进行排序——一个“未读”集合和一个“已读”集合。

  • 当新事件出现时,它们被添加到“未读”集中
  • 当用户阅读消息时,我将消息添加到已读集中,并将其从未读集中删除。

不太确定如何交付它们。例如,我不能将它们合并,因为我失去了已读/未读之间的区别,除非我反转未读分数的分数。

单独返回这两个集合(并将它们合并到代码中)会使分页变得困难。无论已读/未读状态如何,我都希望能够收到 20 条最新消息。

所以,问题:

  1. 读集/未读集是最好的方法吗?有没有更好的办法?
  2. 返回合并/联合数据子集的最佳方法是什么。

谢谢!

4

1 回答 1

4

您可以直接弹出并插入新版本,而不是尝试更新成员。应该没问题,因为您知道成员及其时间戳。

于 2012-11-27T19:00:18.060 回答