Как запуск фонового процесса BGSAVE в Redis использует системный вызов fork() и оптимизацию Copy-on-Write?

BGSAVE создаёт дочерний процесс через fork: ребёнок записывает снимок, а родитель продолжает обслуживать клиентов. Copy-on-Write позволяет сначала разделять страницы памяти и копировать их при изменении.

Короткий ответ

Что ответить на собеседовании

BGSAVE создаёт дочерний процесс через fork: ребёнок записывает снимок, а родитель продолжает обслуживать клиентов. Copy-on-Write позволяет сначала разделять страницы памяти и копировать их при изменении.

Подробный разбор

Ответ с пояснениями

BGSAVE создаёт дочерний процесс через fork: ребёнок записывает снимок, а родитель продолжает обслуживать клиентов. Copy-on-Write позволяет сначала разделять страницы памяти и копировать их при изменении.

Это не означает нулевых затрат: fork копирует таблицы страниц и может вызвать паузу, а активные записи во время снимка увеличивают расход памяти. Дочерний процесс видит состояние на момент создания, не превращая снимок в поток последующих обновлений. Нужно иметь запас RAM и контролировать время сохранения. Успешный запуск BGSAVE ещё не равен подтверждению завершённого снимка.

Источник: redis.io.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее