@Azperin
Дилетант

Насколько оправдано передавать данные пользователя из пхп в ноду через мемкеш?

День добрый.
Ситуация такая, пхп генерирует токен для юзера, который записывается в базу Основной информацией по аутентификации пользователя в ноде является ид + токен. Они отправляются вместе с подключением в сокет.ио (из хендшейка берет) и соответственно нода лезет в базу для проверки есть ли вообще такой пользователь и какие у него права или данные.
Была мысль просто хранить массив пользователей уже в самой ноде, создав просто массив и после каждого обращения к базе, забивать этот массив с инфой о пользователей. Но нода тогда сама превратится в базу данных и не вижу возможности обновить эту информацию при выполнении пхп скрипта с пользователей (например забанить).

Ну и вопрос из сабжа. Насколько оправдано передавать данные пользователя из пхп в ноду через мемкеш ? Либо же проще оставить подключение к базе ?
Большинство запросов формата:
SELECT `name`,`age`,`something`
FROM `users`
INNER JOIN `more info` on (`id`=`id`)
...
WHERE `id`=1 AND `token`='fsdjfkkasfhklasdjfhlkasdfjhalsdk' LIMIT 1


Уточню немного вопрос. Что в таком случае будет менее накладно по памяти и быстродействию ? При условии, что в ноде используется пул подключений к mysql.

И еще тогда пример добавлю при использовании чата. Подключается пользователь как описал выше, через сокетио добавляется в прослушку на on.('chat'), и перед отправкой или получением сообщения, каждый раз проверяет в базе не изменились ли данные через socket.handshake.userid и socket.handshake.token
  • Вопрос задан
  • 689 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Если вопрос теоретический, то Memcache быстрее Mysql.

Если практический, то при правильной бизнес-архитектуре разницы по скорости почти не заметите. Работать с Mysql проще и надежнее.
Я бы все-таки кэшировал в самой ноде логины-пароли после обращения к БД. А про обновлении пароля или бане юзера - эту информацию из PHP пушить напрямую в Node с помощью https://github.com/Wisembly/elephant.io . Но эту оптимизацию можно оставить и на потом. Пока сделайте работающий прототип без кэширования с запросом в БД на каждый коннект.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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