redis,xreadgroup stream和block呆了一年,笨蛋?

xtupzzrd  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(604)

告诉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中流的阻塞机制吗?

zhte4eai

zhte4eai1#

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

相关问题