Задать вопрос
@jekahm

Лучший способ хранения временных результатов поиска, полученных через VK API (в Yii2)?

Доброго времени суток!
Разрабатываю небольшое приложение для поиска и получения списка юзеров по определённым параметрам, используя VK API и фреймворк Yii2 . Но при большом кол-ве юзеров, время первоначальной загрузки скрипта достаточно немалое. А учитывая, что также будет использоваться и пагинация для отображения результатов, то само собой данный длительный процесс поиска будет повторяться на каждой странице.
Поиск может совершаться большим кол-вом пользователей.
Какой метод хранения временных данных наиболее предпочтителен в данной ситуации (учитывая использование Yii2)?
Заранее благодарен за ответ!
  • Вопрос задан
  • 319 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
kawabanga
@kawabanga
вы там скорее всего используете arrayprovider.
Я когда писал API для plati . ru, загонял всю выборку в кэш. и брал ее оттуда.
Ответ написан
@yiiworld
В целом правильно использовать кэш методологию для хранения результатов. А конкретная реализация может быть разная.
1) Просто и быстро: это файловый кэш, для этого в Yii2 есть компонент yii\caching\FileCache. Если у вас быстрый SSD диск будет использоваться, то этого будет достаточно для тысячи запросов на чтение в секунду. Но тут можно упереться в запись - если будет большое количество одновременных изменений в кеше (например больше нескольких десятков в секунду). При всем этом для небольших проектов файловый кеш на SSD будет в разы быстрее работать чем специализированные системы - за счет отсутствия лишних накладных расходов на функционирование самой системы кеширования.
2) Сложно(условно), быстро, масштабируемо: это например использование Redis, для этого в Yii2 есть компонет https://github.com/yiisoft/yii2-redis. Данные хранятся в оперативной памяти поэтому ее должно быть с запасом, конкретные атомарные действия с кешем будут медленнее чем с файловым кешем на SSD, но за счет архитектуры и возможности масштабировать систему, она может выдерживать очень высокие нагрузки по чтению и записи. А также в Redis выигрыш будет когда количество самих данных начнет увеличиваться - например более миллиона записей - это произойдет за счет использования для поиска идентификаторов быстрого индекса. Интерфейсы достаточно простые, но все же нужно понимать как все устроено и потратить на это какое-то время - достаточно часто сталкиваюсь с неправильным применением Redis в проектах.

PS
"большим кол-вом пользователей" понятие относительное - лучше укажите возможное среднее или необходимый "потолок".
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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