0

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

4

2 回答 2

3

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

于 2013-02-20T10:11:53.780 回答
1

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

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

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

于 2013-02-20T09:54:55.157 回答