Redis发布/订阅数据持久性
问题描述:
我正在实现一个使用节点js和redis的TCP聊天服务器,但是我似乎无法使用发布和订阅在redis上保留聊天数据,因此当我离开聊天室并重新进入,我不会更新最新的消息,我应该如何实现这样的东西?Redis发布/订阅数据持久性
答
发布并不意味着存储在Redis的,即使你选择了磁盘存储。当它收到消息时,它只会查找与请求的频道的连接并转发给每个频道。所以,它不存储任何东西。即使这样做,它应该不断地尝试转发消息(因为它是一个pub/sub模型),这不是非常有效。相反,您还应该将(lpush)邮件推送到一个队列中,以便它们可以被存储。当客户端连接并且没有邮件时,它可以从队列中检索这些邮件(无需弹出,所以其他新手也可以使用)以及然后订阅频道并接收新消息。
答