Итак, я работаю над приложением синхронизации видео в NodeJS, где сервер позволяет создать комнату, в которой несколько человек могут подключаться через розетку и синхронно просматривать видео c.
Один из Требования заключаются в том, чтобы иметь возможность выдавать последнее состояние комнаты любому зрителю, подключающемуся или повторно подключающемуся в середине видео, и под последним состоянием, я имею в виду, где другие зрители находятся в mov ie, будь то mov ie воспроизводится, либо приостановлено, либо завершено, и сколько людей в настоящее время подключено к нему.
Я особенно сосредоточен на сохранении последней информации о том, где находятся другие зрители в mov ie.
Итак, я подумал о следующем ( пожалуйста, дайте мне знать, если есть лучший подход )
- Попросите каждого клиента сообщить свое текущее положение
x
в mov ie через определенный интервал вместе с идентификатором комнаты, скажем, 2 секунды. - Если в моем хранилище данных нет записи для идентификатора комнаты, создайте ее. * 10 15 *
- Если есть запись, извлеките ее, проверьте ее последнюю позицию в mov ie
y
и обновите, если x
> y
Я думал о использование Redis в качестве основного хранилища данных для всех этих операций, поскольку, как говорят, он быстрее, чем традиционное чтение / запись БД, но меня беспокоит, будет ли он правильно масштабироваться.
В реальном сценарии жизни, будет намного больше записей, чем чтений, и каждая запись также является своего рода чтением, где я проверяю значение и обновляю только при определенных условиях.
Я где-то читал, что обновления Redis блокируются, и если у меня больше записей / updates, чем чтение, это может действительно замедлить чтение.
Итак, какие у меня здесь варианты?