Грамотное кэширование в NodeJS проекте
Планируется highload-проект с использованием NodeJS, MySQL, Redis, NGINX.
За основу взят nodejs фреймворк express, и для работы с сокетами (может это и не хорошее решение) socket.io. Проект представляет собой Single page application, предполагается что сокет-соединение будет открыто повсеместно. Будет большое количество страниц, которые являются статистично-информативными, и не щадят бд тяжелыми запросами. Собственно ближе к делу, есть несколько вопросов и том как построить кэширование данных и где лучше применять Redis, а где использовать другие способы. 1. Например, есть запрос к БД, результат его мы можем сохранить в Redis в виде JSON, при следующих обращениях уже будем брать его из redis и когда необходимо - делать инвалидацию данного кэша. - На сколько правильно это? и стоит ли именно в JSON хранить данные? 2. Нам иногда нужна закешерованная страница не только в JSON, а кусок или целяком HTML. - Правильно ли, хранить эти куски в redis? 3. Есть идея реализовать session-storage в redis, как это сделать правильно? например ключом будет id сессии, а значением - массив данных о клиенте. - Это правильно или нет? как лучше будет? 4. В каких случаях стоит записывать кэш в файлы на диск? 5. Стоит ли вообще пихать все что выше описано в redis? Я не имею опыта в highload, поэтому мне интересно все что вы скажете, очень нужны грамотные советы в построении проекта на перечисленных компонентах. Может есть какие-то рекомендации по работе с сокетами в highload, либо еще что-то, что касается основ такого проекта. Признателен за ваши полезные советы, благодарю за внимание! |
Часовой пояс GMT +3, время: 13:45. |