【问题标题】:Redis: how (or should) I delete pubsub channelsRedis:我如何(或应该)删除 pubsub 频道
【发布时间】:2013-05-16 10:35:22
【问题描述】:

在我的应用程序中,我动态创建了新的pubsub 频道,每天可能有太多的频道,比如 5k。根据我的应用程序的要求,任何频道最多使用 5 分钟。

考虑到这种情况,一周内应用中将出现数千个未使用的频道。那么如何删除未使用的频道,或者我什至应该删除它们。它们是否存储在内存中?通过它们发布的消息会发生什么情况,它们是否保留在 redis 的内存中?

谢谢

【问题讨论】:

  • 在“5 分钟”之后,您的应用发送UNSUBSCRIBE 命令?
  • 我的客户端是 socket.io 上的 Web 客户端,因此最终用户可能会突然关闭浏览器选项卡,我可能不知道他是否仍然连接。也许我可以通过捕获 socket.io 超时或其他东西来处理这个问题,但主要是它保证UNSUBSCRIBEing 所有订阅者都会导致删除频道?
  • 不确定,试试吧。我记得如果一个频道的订阅者为零,则会被删除。对于消息问题,在发送消息并接收之后不再存在。
  • @byterussian 假设我已经尝试过,我如何确认它已被删除?
  • redis-cli 内部:INFO stats 检查 pubsub_channels

标签: memory redis publish-subscribe


【解决方案1】:

频道是环境的。它们仅在有订阅时存在。所以:要么从订阅的连接中调用 [P]UNSUBSCRIBE,要么关闭订阅的连接。

【讨论】:

  • 感谢您的回答,您能否指定任何来源来表明这一点?我在文档中找不到这样的详细信息。
  • @destan 您可以在之前和之后测量“信息统计”(描述订阅计数) - 足够接近吗?或者你可以阅读源代码?但基本上我知道“通过与作者交谈”——我害怕技术
猜你喜欢
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 2021-01-29
  • 2019-07-07
  • 2021-11-18
  • 2021-12-21
相关资源
最近更新 更多