Symfony 4 - решение для кеширования и БД

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

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

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

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
112
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

На самом деле не все они находятся под одним КЛЮЧОМ, но у каждого из них есть один ключ и теги (так что я могу получить узлы lvl1, 2, 3 ..). Я предполагаю, что, поскольку количество данных в конечном итоге увеличится, я сразу перейду к DB / ES. Спасибо за примеры сторонних сервисов, попробую :)

Antoine Nedelec 10.06.2018 16:34

Другие вопросы по теме