TLDR: чтение из памяти быстрое, чтение из сети медленнее и не должно блокировать процесс
Вы правы. Чтение из кеша памяти очень быстрое. Это так же быстро, как доступ к любой переменной (микро или нано секунд), поэтому нет веских оснований для реализации этого в качестве обратного вызова / обещания, поскольку это будет значительно медленнее. Но это верно только в том случае, если вы читаете из памяти процесса nodejs.
Проблема с использованием redis с узла заключается в том, что кэш памяти хранится на другом компьютере (сервере redis) или, по крайней мере, в другом процессе. Таким образом, даже если redis читает данные очень быстро, он все равно должен пройти через сеть, чтобы вернуться на сервер вашего узла, который не всегда гарантирует быструю работу (обычно, по крайней мере, несколько миллисекунд). Например, если вы используете сервер redis, который физически не расположен рядом с вашим сервером nodejs, или у вас слишком много сетевых запросов ... запрос может занять больше времени, чтобы достичь redis и вернуться на ваш сервер. А теперь представьте, что если это блокировка по умолчанию, это помешает вашему серверу делать что-либо еще, пока запрос не будет выполнен. Это приведет к очень низкой производительности, так как ваш сервер бездействует в ожидании отключения по сети. Вот почему любая операция ввода-вывода (диск, сеть, ..) в nodejs должна быть асинхронной по умолчанию.