我是Redis的新手。我正在设计一个pub / sub机制,其中每个客户端(业务客户端)都有一个特定的通道,至少连接了一个用户(浏览器)。然后,这些用户会收到他们所属的客户的信息。
我需要Redis,因为我有一个分布式系统,因此存在一个后端,它将数据推送到相应的客户端通道,然后存在一个webapp,它拥有自己的服务器(多个实例),用于保存用户连接(websockets)。 / p>
恢复
因此,为了减少工作量,从我的后端我不想将数据推送到没有连接用户的客户端。因此,我似乎需要从Webapp到我的后端共享连接用户列表,以便后端可以决定将哪些客户端数据推送到Redis。共享该数据的明显解决方案将是相同的Redis实例。
我的方法是在Redis中使用这样的键:
[ USERS :
User1/ClientA/WebappServer1, User2/ClientB/WebappServer1,
User3/ClientA/WebappServer2
]
所以这是我的问题......
如果我的某个Web应用程序节点崩溃并且没有机会从Redis中删除已连接用户的列表,我该如何克服过时数据?
非常感谢!
答案 0 :(得分:1)
首先,整个项目好运 - 听起来充满挑战和乐趣:)
我使用稍微不同的设计来跟踪我的用户 - 让每个客户端/ Web应用程序维护一组用户(可能按登录时间作为分数排序)。为集合设置TTL并让客户端/ webapp定期重置,否则如果拥有进程崩溃,它将过期。