Redis陈旧数据

时间:2014-09-26 23:36:27

标签: redis

我是Redis的新手。我正在设计一个pub / sub机制,其中每个客户端(业务客户端)都有一个特定的通道,至少连接了一个用户(浏览器)。然后,这些用户会收到他们所属的客户的信息。

我需要Redis,因为我有一个分布式系统,因此存在一个后端,它将数据推送到相应的客户端通道,然后存在一个webapp,它拥有自己的服务器(多个实例),用于保存用户连接(websockets)。 / p>

恢复

  • 后端是发布者,webapp服务器是订阅者
  • 客户有多个用户
  • 每个客户一个渠道,至少有一个用户已连接
  • 如果客户端没有连接的用户,则不存在任何渠道
  • 后端将数据推送到每个现有客户端频道
  • Webapp Server从与自身连接的用户对应的客户端渠道中使用数据。

因此,为了减少工作量,从我的后端我不想将数据推送到没有连接用户的客户端。因此,我似乎需要从Webapp到我的后端共享连接用户列表,以便后端可以决定将哪些客户端数据推送到Redis。共享该数据的明显解决方案将是相同的Redis实例。

我的方法是在Redis中使用这样的键:

  

[ USERS User1/ClientA/WebappServer1, User2/ClientB/WebappServer1,   User3/ClientA/WebappServer2]

所以这是我的问题......

如果我的某个Web应用程序节点崩溃并且没有机会从Redis中删除已连接用户的列表,我该如何克服过时数据?

非常感谢!

1 个答案:

答案 0 :(得分:1)

首先,整个项目好运 - 听起来充满挑战和乐趣:)

我使用稍微不同的设计来跟踪我的用户 - 让每个客户端/ Web应用程序维护一组用户(可能按登录时间作为分数排序)。为集合设置TTL并让客户端/ webapp定期重置,否则如果拥有进程崩溃,它将过期。