告诉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中流的阻塞机制吗?
1条答案
按热度按时间zhte4eai1#
另一方面,当xreadgroup阻塞时,xadd将支付o(n)时间,以便为流中阻塞的n个客户端提供获取新数据的服务
假设流为空,n个客户机调用
XREADGROUP
使用不同的组名。由于流是空的,这些客户机将阻塞,直到出现新消息。当你打电话的时候
XADD
要向流中添加消息,redis需要向这些n个阻塞的客户端发送回复。这就是为什么XADD
我将按时付款。告诉xreadgroup在出现消息之前阻止,而不是让客户机进行轮询,这有什么坏处吗?
如果n非常大,即流中阻塞的客户端太多,
XADD
命令可能会阻塞redis一段时间,因为它是单线程的。如果n很小,则不会对性能产生影响。