Некоторые источники, включая официальную документацию Redis, отмечают, что использование команды KEYS
- плохая идея в производственных средах из-за возможной блокировки. Если приблизительный размер набора данных известен, имеет ли SCAN
какое-либо преимущество перед KEYS
?
Например, рассмотрите базу данных с не более чем 100 ключами данных формы data:number:X
где X
- целое число. Если я хочу получить все эти данные, я могу использовать команду KEYS data:number:*
. Будет ли это значительно медленнее, чем использование данных SCAN 0 MATCH data:number:* COUNT 100
? Или две команды по существу эквивалентны в этом случае? Можно ли сказать, что SCAN
предпочтительнее KEYS
потому что он защищает от сценария, в котором будет возвращен неожиданно большой набор?