我正在使用节点js和redis实现TCP聊天服务器,但是我似乎无法使用发布和订阅在redis上保留聊天数据,因此当我离开聊天室并重新进入时,我将不会更新了最新的消息,我应该如何实现这样的东西?
答案 0 :(得分:3)
即使您选择了磁盘存储,发布也不应存储在Redis中。当它收到消息时,它只是找到与所请求频道的连接并转发到每个消息。所以,它不存储任何东西。即使它确实如此,它应该不断尝试转发消息(因为它是一个发布/子模型),这不是很有效。相反,你也应该(通过lpush将消息推送到队列,这样它们就可以被存储。当客户端连接并且没有消息时,它可以从队列中检索这些消息(没有弹出,所以其他新手可以也使用)然后订阅频道并收到新消息。
答案 1 :(得分:1)
默认情况下,redis仅在内存中。您必须明确启用持久性。
有多个选项,AOF每个查询都是最安全的,但可能是最慢的。