2013-02-20 142 views
0

我正在实现一个使用节点js和redis的TCP聊天服务器,但是我似乎无法使用发布和订阅在redis上保留聊天数据,因此当我离开聊天室并重新进入,我不会更新最新的消息,我应该如何实现这样的东西?Redis发布/订阅数据持久性

回答

3

发布并不意味着存储在Redis的,即使你选择了磁盘存储。当它收到消息时,它只会查找与请求的频道的连接并转发给每个频道。所以,它不存储任何东西。即使这样做,它应该不断地尝试转发消息(因为它是一个pub/sub模型),这不是非常有效。相反,您还应该将(lpush)邮件推送到一个队列中,以便它们可以被存储。当客户端连接并且没有邮件时,它可以从队列中检索这些邮件(无需弹出,所以其他新手也可以使用)以及然后订阅频道并接收新消息。

1

默认情况下,redis仅在内存中。您必须明确启用持久性。

有多种选择,AOF每个查询是最安全的,但可能是最慢的。

更多细节在这里:http://redis.io/topics/persistence