Redis кеш базы данных в laravel 5.6 - PullRequest
0 голосов
/ 15 июня 2019

Я хочу кэшировать результаты моего запроса, и я читаю о Cache :: запомнить в laravel, но это требует параметра времени, и я не хочу устанавливать время для моего кэша redis.

Мне нужно что-то, чтобы кэшировать свои запросы, и после того, как запросы обновили результаты, измененные обновлением.

какова ваша рекомендация?

Ответы [ 2 ]

1 голос
/ 15 июня 2019

Хранение полной коллекции красноречивых моделей в Redis может быть медленнее, чем ожидалось.

В моем случае мне пришлось создать вложенную выборку с лотом where, count, join, group by и order by ... и т. Д.

Он потребляет много ресурсов при каждом запросе, поэтому я попытался кэшировать результат.Это было не лучшее решение, потому что оно было (в 4 раза) медленнее, чем я хотел (ответ 200+ мс).

Решение - SELECT id FROM ... из "огромного" запроса и хранения идентификаторов в redis.После этого SQL-запрос выглядит как SELECT * FROM <table> WHERE id IN (...); в каждом запросе.(При необходимости измените порядок данных в запросе sql)

Таким образом, можно быстро запросить необходимые данные из redis и sql.Среднее время ответа составляет менее 50 мс.

Надеюсь, это поможет.

0 голосов
/ 15 июня 2019

Для этого есть очень хорошая библиотека, но они предупреждают, что она совместима только с laravel 5.8.Если бы вы могли обновить, это путь.Если обновление laravel не является вариантом, по крайней мере, вы можете прочитать код и попытаться следовать в том же направлении, что и они.

https://github.com/GeneaLabs/laravel-model-caching

Эта библиотека делает именно то, что вам нужно.Вы можете кэшировать свои модели и / или пользовательские запросы, и вы можете аннулировать этот кеш всякий раз, когда модель обновляется, создается или удаляется.

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