Symfony 4 - решение для кеша и базы данных - PullRequest
0 голосов
/ 10 июня 2018

В настоящее время я использую кеш для моего текущего проекта, но я не уверен, что это правильно.

Мне нужно получить много данных из веб-API (узлов, которыеэто может быть картинка, узел, папка, галерея .... Эти узлы будут меняться очень часто, поэтому мне нужен быстрый доступ (загрузка сразу до 300-400 элементов). В настоящее время я храню их в кеше (ключ как md5 для node_id,так легко получать и обновлять).

Пока все работает отлично, но если я очищаю кеш, мне потребуется до 1 минуты, чтобы снова создать весь кеш.

Должен ли я использоватьбаза данных для хранения этих узлов? Будет ли она быстрее / медленнее / такая же?

1 Ответ

0 голосов
/ 10 июня 2018

Ваш вопрос очень широкий и поэтому трудно ответить.Сохранение 300-400 элементов под ключом кеша кажется мне проблематичным.Вы можете столкнуться с проблемами, когда сериализация при хранении в кеше и десериализация при извлечении данных создаст вам проблемы.Когда служба кэширования не работает, ваше приложение будет практически непригодным для использования.

Если вы уже столкнулись с проблемами при очистке / обновлении кэша, возможно, вы захотите найти альтернативу.Это может быть база данных или эластичный поиск, расширенные функции кэширования, такие как теговое кэширование , могут помочь вам избежать необходимости очищать весь кэш при обновлении части информации.Возможно, вы также захотите использовать что-то вроде провайдера цепочек для хранения вещей в нескольких кэшах, чтобы предотвратить вышеупомянутую проблему с недоступным кешем, «ломающим» ваше приложение.Вы также можете взглянуть на шаблон, общий для CQRS, который называется моделью чтения.

В игру вступает множество переменных.Если вы хотите знать, какой из них даст наилучшие результаты, т.е. какой быстрее, вам следует часто проводить тесты производительности с реалистичными данными, используя панель отладки Symfony и профилировщики или сторонние службы, такие как blackfire.io или приливы .Вам также может потребоваться выполнить тестирование емкости с помощью такого инструмента, как JMeter , чтобы убедиться, что эти результаты остаются в силе, когда одновременно работают несколько пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...