我正在考虑使用MGET或管道,但似乎找不到我正在寻找的的MGET
信息
我的用例是用MGET
或pipeline
替换50个GET
调用
到目前为止,我发现:
当我们使用pipeline
时,命令不能保证一个接一个地执行,其他客户端命令可以在两者之间执行。这意味着,当我们用pipeline
对GET
命令进行分组时,redis不会被O(50(阻止,其他客户端将有机会执行他们的命令(50是我正在分组的GET
调用的数量(
另一方面,对于命令MGET
,我无法找到它如何工作的信息——当我们用50个密钥调用MGET时,该命令会阻止redis实例直到它获得所有密钥吗?MGET
是如何工作的?
因为Redis是单线程的,所以任何一个命令都会被阻塞,直到它完成。包括CCD_ 11。
管道只是批处理命令的一种方式,它们不会阻塞其他客户端。
因此:MGET
将阻塞,而管道不会。