我需要使用网络套接字和redis发布/子频道来提高性能。我使用龙卷风作为网络服务器。
我有大约100个客户监听某些事件的状态。每个客户都有单独的事件,只需要监听自己的事件。套接字连接是短暂的,约1-20秒。我看到两个选择:
为每个套接字事件对在redis中创建单独的pub / sub通道。在这种情况下,我将有很多渠道。
创建一个发布/订阅者频道,为其订阅所有客户端并过滤控制器中的消息以将其转发到适当的客户端。在这种情况下,我有很多客户听一个频道。
这些选项中哪一个更适合性能?
答案 0 :(得分:1)
案例1)
假设您有M
个客户端,每个客户端只订阅一个通道(而不是订阅模式),那么发布N
msg的复杂性为O(N)
。
案例2)
假设您有M
个客户订阅了一个频道,所有客户都收到N
条消息。发布和过滤过程的复杂性为O(MN)
。
所以你应该选择案例1.案例1更快,因为redis将消息发布到频道总是不变的时间(除非是模式)
了解redis发布时间复杂度here