@drowzeenico

Возожно-ли сохранить объекты node.js в Redis?

Всем привет.

Пишу TCP сервер на node.js. Клиентов может быть много и они отправляют сообщения каждый 5-10 секунд. Для начала я просто сделал хеш из сокетов(клиентов) по их ID. Но, как я уже говорил, клиентов может быть много, и держать это все в памяти ноды - накладно, я так думаю.

Подумал про Redis. Но как я помню, Redis все сохраняет как строку. Можно ли использовать сериализацию в JSON и обратно? Так вообще делают?

Возможно-ли вообще эти сокеты(нативные объекты ноды с методами и прочими) хранить в Redis или в каком-нибудь NoSQL-хранилище?
  • Вопрос задан
  • 770 просмотров
Решения вопроса 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Нет. Вам же нужно их обрабатывать, они же открытые TCP сокеты, в какую базу? У каждого сокета есть идентификатор и кусок памяти свой выделен на уровне операционной системы под буфер. Кроме того, из каждого сокета что-то приходит, и в него нужно что-то слать, это что тоже через базу делать? Похоже на то, что Вам нужно почитать про TCP/IP, про сокеты и про сетевое программирование хоть несколько статей, хоть бы на Хабре может. И Вам нужен cluster, чтобы распределить эти сокеты на несколько процессов, чтобы у одного действительно память не кончилась и чтобы занять другие ядра проца.

Кроме того, обратите внимание, что TCP - это не пакетно ориентированный протокол, а потоковый, т.е. если отправить 10кб данных одним разом, то они могут прийти одним разом, а могут подробиться как угодно, прийти за 4 раза, например, 1кб+3кб+4кб+2кб. Так же и склеиваться могут, если отправить подряд 5 фрагментов, то они могут склеиться в один. Более того, от одной посылки может отклеиться небольшая часть и приклеиться к следующей. Все, что TCP гарантирует, это то, что данные придут точно и в правильной последовательности.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы