为什么我的redis命令键不会阻止我的其他操作

时间:2018-11-12 11:43:50

标签: redis redis-cli

从许多博客中得知,redis命令keys *可能会阻止redis服务器,而其他命令则无法按时执行。

但是,今天我在拥有大约800万数据的数据库上运行keys *。 然后我使用我的其他客户端执行其他命令,例如getset,这一切都很好,并能及时给出响应。

所以,我很困惑为什么我的命令keys没有被阻止。

图片为https://i.stack.imgur.com/8flt4.png

1 个答案:

答案 0 :(得分:2)

KEYS(以及与此相关的几乎所有其他Redis命令) 正在阻止,请不要上当:)

Redis正在扫描其内部字典并组装响应时,它被阻止。但是,在准备好响应并将其移至网络层之后,服务器可以自由处理下一个操作。同时,您的客户端从发送KEYS开始一直被阻止,直到收到整个响应为止。