【发布时间】:2014-11-22 01:36:34
【问题描述】:
我是 Redis 的新手。我正在设计一种发布/订阅机制,其中每个客户端(业务客户端)都有一个特定的频道,至少有一个用户(浏览器)连接。然后,这些用户会收到他们所属客户的信息。
我需要 Redis,因为我有一个分布式系统,所以存在一个将数据推送到相应客户端通道的后端,然后存在一个 webapp,它有自己的服务器(多个实例)来保存用户连接(websockets)。
恢复中:
- 后端是发布者,webapp 服务器是订阅者
- 一个客户有多个用户
- 每个客户端一个通道,至少连接 1 个用户
- 如果客户端没有连接的用户,则不存在通道
- 后端将数据推送到每个现有的客户渠道
- Webapp 服务器仅使用来自与连接到自身的用户相对应的客户端通道的数据。
因此,为了减少工作量,我不想从我的后端将数据推送到没有连接用户的客户端。所以似乎我需要将连接用户列表从我的 Web 应用程序共享到我的后端,以便后端可以决定哪些客户端数据推送到 Redis。共享该数据的明显解决方案是同一个 Redis 实例。
我的方法是在 Redis 中使用类似这样的键:
[用户:
User1/ClientA/WebappServer1, User2/ClientB/WebappServer1,User3/ClientA/WebappServer2]
所以我的问题来了……
如果我的一个 Webapps 节点崩溃并且它没有机会从 Redis 中删除与其连接的用户列表,我该如何克服陈旧数据?强>
非常感谢!
【问题讨论】:
标签: redis