2011-10-11 76 views
0

我不完全确定Redis是这样的东西的最佳工具,但我认为这是可能的。很多时候,有一条消息要发送给所有用户。几乎就像一个系统广泛的新闻条目。您希望确保用户不会多次看到此消息,他们只应在登录时看到此消息,之后他们就不会再看到该消息部分,直到发布新消息。在Redis中构建“消息读取”类型队列系统的解决方案?

我想在MySQL中保留一个表格,它为每次用户读取消息时设置一个布尔列作为执行此操作的低效方式。你不能真正归档这样的表格,因为如果你这样做,你就不会知道用户读过什么消息,哪些消息没有。

如果这可以在内存中完全使用Redis pub/sub完成,那将会很棒。什么是消息读取类型系统的一些策略?

回答

0

当然,您可以利用redis pub/sub功能,也可以使用socket.io作为comet - 服务器将消息推送到客户端。如果这就是你想要做的事情,我可以详细说明一下,但我不完全确定系统是否必须为你的用例而复杂化。通过pubsub/comet实现从前端到后端的所有操作都不是一件容易的事情,尽管这是可行的,有时也是必需的/正确的解决方案。

如何更简单的方法可能工作为你,太:

creation_date日期时间字段创建一个news表。将last_seen_news_date字段添加到您的user表中,将其设置为过去某个日期的所有用户。

当用户加载页面,查询新闻条目是这样的:

select * from news where creation_date > last_seen_news_date_of_user 

然后与当前日期时间或者也许是最近的新闻文章的日期时间更新last_seen_news_date