Я хочу реализовать чат в реальном времени.Моя основная база данных - это PostgreSQL с бэкэндом, написанным на NodeJS.Клиентами будут мобильные устройства.
Насколько я понимаю, для достижения производительности обмена сообщениями в реальном времени мне нужно использовать Redis.Поэтому я планировал использовать Redis для X самых последних сообщений между 2 и более людьми (групповой чат), например 1000, и все синхронизируется и поддерживается в моей основной базе данных, которой является PostgreSQL.Однако, поскольку Redis - это, по сути, просто RAM, история чата может быть слишком «уязвимой» из-за нестабильности хранения данных в RAM.Поэтому, если на моем сервере Redis произойдет непредвиденный и временный сбой, последние сообщения в разговорах будут потеряны.
Каковы наилучшие практики в настоящее время для реализации чего-либо подобного?Мне просто нужно сохранить данные Redis на диск?но в этом случае, не повредит ли это производительности, так как это увеличит время записи для каждого отправленного сообщения?
Или, может быть, я должен просто подготовить метод восстановления, который извлекает недавнюю историю из PostgreSQL в случае, если мой список истории чата в Redis пуст?
PS - пока мы здесь, не могли бы выПожалуйста, предложите хороший подход для поддержания статуса пользователей (онлайн / оффлайн)?Это сделано и с Redis?