微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis,XREADGROUP流阻塞了一年,笨吗?

如何解决Redis,XREADGROUP流阻塞了一年,笨吗?

告诉XREADGROUP阻止直到出现消息,而不是客户端必须轮询,是否有不利之处?

发件人:

https://redis.io/commands/xreadgroup

目前尚不清楚这意味着:

"On the other side when XREADGROUP blocks,XADD will pay the O(N) time in order to serve the N clients blocked on the stream getting new data."

有人可以阐明Redis中流的阻塞机制吗?

解决方法

“另一方面,当XREADGROUP阻塞时,XADD将付出O(N)时间,以便为在流上阻塞的N个客户端提供新数据服务。”

说,流为空,并且N个客户端使用不同的组名呼叫XREADGROUP。由于流为空,因此这些客户端将阻塞,直到收到新消息为止。

当您调用XADD将消息添加到流中时,Redis需要向这N个阻止客户端发送回复。这就是XADD要付出O(N)时间的原因。

告诉XREADGROUP阻止直到出现消息,而不是客户端必须轮询,是否有不利之处?

如果N很大,即有太多客户端在流上阻塞,则XADD命令可能会阻塞Redis一段时间,因为它是单线程的。如果N小,则不会对性能产生影响。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。