Redis - 最大订阅/连接数?

标签 redis jedis lettuce redisson

我正在使用 Redis 和 WebSockets(带有 sockJS 和 STOMP)设计一个基于 Java Spring 的实时通知系统和聊天系统。要求是每个用户订阅一个唯一的 channel ( channel 名称将是用户 ID)。这是因为通知可以针对单个用户,聊天对话可以是一对一的。我使用 redis 的真正原因是在用户通过 WebSocket 连接的相应应用程序服务器(有很多)中触发事件。据我了解,当发布碰巧说“user1”时 - 如果我想为该目标用户触发“onMessage 处理程序”:

  1. 我需要为每个用户维护 1 个 redis 连接吗?
  2. 对于那些同时连接到系统的许多用户,一次打开 15k 个连接和 15k 个唯一订阅是否可以?

最佳答案

既然你已经用 Redisson 标记了问题,我想你已经在使用它了。如果您对 WebSocket 框架的选择是灵活的,即不限于使用 STOMP 的 SockJS,您可以考虑 netty-socketio项目。它是由 Redisson 的作者编写的,两者之间的结合再自然不过了。

Netty-socketio 完全兼容流行的 SocketIO客户端 JS 库,许多公司在商业上使用它。

它不需要每个用户一个 redis 连接,并且已知有人的使用量已经超过了您的要求。

项目的 README 文件中提到了这一点。

Customer feedback in 2014:

"To stress test the solution we run 30 000 simultaneous websocket clients and managed to peak at total of about 140 000 messages per second with less than 1 second average delay." (c) Viktor Endersz - Kambi Sports Solutions

关于Redis - 最大订阅/连接数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532870/

相关文章:

python - python原生数据结构 "DICTIONARY"和 "Redis"数据库有什么区别?

java - 如何在运行时编辑 application.properties(供下次使用)

.net - 如何使用 StackExchange.Redis 禁用证书验证?

multithreading - 在 Redis 中更新和检索 key

redis - Lettuce重连后会重新发送AUTH吗?

php - 有效地将存储在 Redis 中的正则表达式与我的输入匹配

java - 具有集群支持的 Spring Data Redis

redis - 为什么在将 Jedis 与 Spring Data 结合使用时,数据会以奇怪的键存储在 Redis 中?

java - 无法使用 Lettuce 连接到本地 Redis 集群

python - 如何在 Eclipse 中的 Django 项目中使用生菜?