почему мои командные клавиши redis не блокируют другие мои операции - PullRequest
0 голосов
/ 12 ноября 2018

из многих блогов, я узнаю, что команда redis keys * может заблокировать сервер redis, а другая команда не может быть выполнена вовремя.

однако сегодня я запускаю keys * на моей базе данных, которая содержит около 8 миллионов данных. и затем я использую другой мой клиент для выполнения другой команды, такой как get или set, все это работает хорошо и дает ответ вовремя.

Итак, я запутался, поэтому моя команда keys не блокируется.

картинка https://i.stack.imgur.com/8flt4.png

1 Ответ

0 голосов
/ 12 ноября 2018

KEYS (и почти любая другая команда Redis в этом отношении) - это блокировка, не обманывайте себя:)

Пока Redis сканирует свой внутренний словарь и собирает ответ, он блокируется. Однако после того, как ответ готов и перемещен на сетевой уровень, сервер может обрабатывать следующие операции. Тем временем ваш клиент блокируется с момента отправки KEYS до получения им полного ответа.

...