Кеширование запросов в Redis

Тема в разделе "Инструкции и FAQ", создана пользователем Ravilr, 27 янв 2023.

  1. Ravilr

    Ravilr Специалист

    Сообщения:
    3.877
    Симпатии:
    1.064
    Кешировать запросы MySql в OpenCart можно по разному, хоть в файлы, хоть куда. Решения есть и столько же подходов.

    Давненько клиенту нужно было закешировать запросы OpenCart в Redis в итоге делал решение, которое оставляю тут "как есть" (нашел у себя.. но возможно не закончено.. уже не помню)

    0. Подключаем хранилище Redis на хостинге. У многих есть, я пользуюсь Бегет, поэтому оставлю ссылку на их инструкцию https://beget.com/ru/kb/how-to/services/ispolzovanie-redis

    1. Файл из архива кидаем в system\library\db

    2. Редактируем config.php в строке
    Код:
    define('DB_DRIVER', 'mysqli');
    меняем на redis

    Готово.

    Теперь о принципе работы. Она по сути одинакова для всех кешеров.
    1. Формируем из SQL запроса id ключ. Конечно формируем если видим запросы SELECT подходящее под условия.
    2. Если в хранилище Redis есть данные для данного ключа, то получаем их. Если нет, то записываем.
     

    Вложения:

    • redis.zip
      Размер файла:
      1,2 КБ
      Просмотров:
      9
    optimlab, karpov и Romans нравится это.
  2. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    А что будет быстрее, редис или дефолтный кеш из опенкарт?
     
  3. Ravilr

    Ravilr Специалист

    Сообщения:
    3.877
    Симпатии:
    1.064
    А в опенкарте есть дефолтный кеш sql :) Если про стандартный кеш данных, то их то не много, разницы в скорости не будет особо заметна. Но если что то свое, то при большом кол-ве redis должен выиграть в скорости.

    Я данное решение по кешу sql тестировал на магазине с 30т товарами и много категориями и прирост в скорости был и нагрузка на бд тоже снизилась.

    Если редиса нет на хостинге и разбираться с кешированием нет желания, то я тут про рекламирую модуль
    https://shop.opencart-russia.ru/imdboptimizer3 Там уже все сделано заранее и в большинстве случаев работает сразу без настроек.