如何解决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 举报,一经查实,本站将立刻删除。