从许多博客中得知,redis命令keys *
可能会阻止redis服务器,而其他命令则无法按时执行。
但是,今天我在拥有大约800万数据的数据库上运行keys *
。
然后我使用我的其他客户端执行其他命令,例如get
或set
,这一切都很好,并能及时给出响应。
所以,我很困惑为什么我的命令keys
没有被阻止。
答案 0 :(得分:2)
KEYS
(以及与此相关的几乎所有其他Redis命令) 正在阻止,请不要上当:)
Redis正在扫描其内部字典并组装响应时,它被阻止。但是,在准备好响应并将其移至网络层之后,服务器可以自由处理下一个操作。同时,您的客户端从发送KEYS
开始一直被阻止,直到收到整个响应为止。