每次打开首页的话,如果是我看过的帖子或是收藏的帖子和没有看过没有收藏的用颜色区分出来,我关注的或收藏的或看过的有新动态在上面标一个小红圈,就像 iphone 的未读短信
#3 楼 @aNdReW_Qx 如果是要精确到有多少个更新,这样的需求也许放在每次更新操作之后的 callback 里去起一个 background job 来做比较好,拿 Topic 举例,在每次对 Topic 的操作之后在 background job 里对所有参与者(包括发帖人、回帖人、收藏者等)push 通知
#5 楼 @aNdReW_Qx 这个思路也可以做成 pull,也许我表达有误。这里的 push 通知是一个广义的说法,并不是特指 push 通知给浏览器这样的。在 background job 里可以调用 User 的某个方法来响应本次操作,比如给某个 redis-objects 属性 incr(1) 之类的。
#7 楼 @aNdReW_Qx 把时间戳作为 score 然后用 zrangebyscore 怎么样 http://redis.io/commands/zrangebyscore
某个时间点到现在的所有信息:zrangebyscore "yourkey", timestamp.to_i, Time.current.to_i 某个时间点以后的所有信息:zrangebyscore "yourkey", timestamp.to_i, "+inf"
redis list 是有 SORT 方法的,redis 支持 Sorting by external keys,如果 list 里的每个项都包含某个 key,那么可以用该 key 来排序 list,比如:
SORT mylist BY timestamp
然后配合 LRANGE,可以得到所有某个时间戳之后的新信息。