为什么我的 redis 命令键不会阻止我的其他操作
why my redis command keys does not block my other operation
看了很多博客,了解到redis命令keys *
可能会阻塞redis服务器,导致其他命令无法按时执行。
然而,今天我 运行 我的数据库中的 keys *
有大约 800 万条数据。
然后我使用我的另一个客户端执行其他命令,如 get
或 set
,这一切都很好,并按时给出响应。
所以,我很困惑为什么我的命令 keys
没有阻塞。
图片是https://i.stack.imgur.com/8flt4.png
KEYS
(以及与此相关的几乎任何其他 Redis 命令)是阻塞,不要被愚弄:)
当 Redis 正在扫描其内部字典并组装响应时,它被阻止了。但是,在响应准备好并移至网络层后,服务器可以自由处理接下来的操作。与此同时,您的客户端从发送 KEYS
到收到整个响应期间都处于阻塞状态。
看了很多博客,了解到redis命令keys *
可能会阻塞redis服务器,导致其他命令无法按时执行。
然而,今天我 运行 我的数据库中的 keys *
有大约 800 万条数据。
然后我使用我的另一个客户端执行其他命令,如 get
或 set
,这一切都很好,并按时给出响应。
所以,我很困惑为什么我的命令 keys
没有阻塞。
图片是https://i.stack.imgur.com/8flt4.png
KEYS
(以及与此相关的几乎任何其他 Redis 命令)是阻塞,不要被愚弄:)
当 Redis 正在扫描其内部字典并组装响应时,它被阻止了。但是,在响应准备好并移至网络层后,服务器可以自由处理接下来的操作。与此同时,您的客户端从发送 KEYS
到收到整个响应期间都处于阻塞状态。