В классической модели Redis основное выполнение команд сериализовано, но часть работ выполняется другими потоками или процессами. В Redis 6 появились настраиваемые I/O threads для сетевого ввода-вывода.
Почему Redis считается однопоточным, но начиная с версии 6.0 использует многопоточность? Что именно было распараллелено?
В классической модели Redis основное выполнение команд сериализовано, но часть работ выполняется другими потоками или процессами. В Redis 6 появились настраиваемые I/O threads для сетевого ввода-вывода.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В классической модели Redis основное выполнение команд сериализовано, но часть работ выполняется другими потоками или процессами. В Redis 6 появились настраиваемые I/O threads для сетевого ввода-вывода.
Речь не о параллельном выполнении любых команд над общей базой. Потоки помогают обслуживать чтение и запись сокетов; конкретный режим зависит от конфигурации. Фоновое освобождение памяти и операции persistence имеют собственные механизмы, включая дочерние процессы. Поэтому слово «однопоточный» описывает ключевой путь исполнения команд, а не утверждает, что у процесса всегда единственный поток.
Источник: raw.githubusercontent.com.