Redis管道与mget

Redis管道与mget,redis,Redis,我正在研究使用or,但似乎找不到我要查找的MGET上的信息 我的用例是将50个GET调用替换为MGET或pipeline 到目前为止,我发现: 当我们使用管道时,不能保证命令一个接一个地执行,其他客户端命令也可以在其间执行。这意味着当我们将GET命令与pipeline进行分组时,redis不会被阻塞O(50),其他客户端将有机会执行它们的命令(50是我分组的GET调用数) 另一方面,对于命令MGET我无法找到它如何工作的信息-当我们使用50个键调用MGET时,该命令是否会阻止redis实例,直到

我正在研究使用or,但似乎找不到我要查找的
MGET
上的信息

我的用例是将50个
GET
调用替换为
MGET
pipeline

到目前为止,我发现:

当我们使用
管道
时,不能保证命令一个接一个地执行,其他客户端命令也可以在其间执行。这意味着当我们将
GET
命令与
pipeline
进行分组时,redis不会被阻塞O(50),其他客户端将有机会执行它们的命令(50是我分组的
GET
调用数)


另一方面,对于命令
MGET
我无法找到它如何工作的信息-当我们使用50个键调用MGET时,该命令是否会阻止redis实例,直到它获得所有键?
MGET
是如何工作的

因为Redis是单线程的,所以任何单个命令都将阻塞,直到它完成。包括
MGET

管道只是批处理命令的一种方式,它们不会阻止其他客户端


因此:
MGET
将被阻塞,而管道不会被阻塞。

因为Redis是单线程的,所以任何单个命令都将被阻塞,直到它完成为止。包括
MGET

管道只是批处理命令的一种方式,它们不会阻止其他客户端


因此:
MGET
将被阻止,而管道不会被阻止。

您能否解释一下,当Redis服务于一个MGET或命令管道时,为什么需要Redis阻止而不服务于其他客户端?一般来说,只要能够保持数据一致性,任何服务器都应该能够并行地服务多个请求。考虑到您将要调用GET(使用MGET或pipeline),您是否希望其他客户端在您尝试获取值时不会更改该值?我可能不够清楚,但我不希望redis阻止任何内容。我知道redis是单线程的,它将一次执行一个命令。我只是想知道用
MGET
pipeline
替换50个
GET
调用会有什么影响。我找不到任何关于
MGET
如何工作的信息,除了它有O(N),其中N是键的数量。我想知道它是否会在一个阻塞调用中获取所有50个键,或者其他客户端会有机会在这50个调用之间执行命令。请解释一下,当Redis服务于一个MGET或命令管道时,为什么需要Redis阻塞而不服务于其他客户端?一般来说,只要能够保持数据一致性,任何服务器都应该能够并行地服务多个请求。考虑到您将要调用GET(使用MGET或pipeline),您是否希望其他客户端在您尝试获取值时不会更改该值?我可能不够清楚,但我不希望redis阻止任何内容。我知道redis是单线程的,它将一次执行一个命令。我只是想知道用
MGET
pipeline
替换50个
GET
调用会有什么影响。我找不到任何关于
MGET
如何工作的信息,除了它有O(N),其中N是键的数量。我想知道它是否会在一个阻塞调用中获取所有50个键,或者其他客户端会有机会在这50个调用之间执行命令