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

why my redis command keys does not block my other operation

看了很多博客,了解到redis命令keys *可能会阻塞redis服务器,导致其他命令无法按时执行。

然而,今天我 运行 我的数据库中的 keys * 有大约 800 万条数据。 然后我使用我的另一个客户端执行其他命令,如 getset,这一切都很好,并按时给出响应。

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

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

KEYS(以及与此相关的几乎任何其他 Redis 命令)阻塞,不要被愚弄:)

当 Redis 正在扫描其内部字典并组装响应时,它被阻止了。但是,在响应准备好并移至网络层后,服务器可以自由处理接下来的操作。与此同时,您的客户端从发送 KEYS 到收到整个响应期间都处于阻塞状态。