Кэширование Webasyst средствами Redis

Посмотрел мануал по кэшированию https://developers.webasyst.ru/docs/features/cache/

В эту конструкцию хотелось бы вместо XCache записать Redis

Подскажите корректный алгоритм

<?php
return array(
    'default' => array(    //используйте ключ 'default' для того средства кеширования, которое должно использоваться по умолчанию
        'type' => 'memcached',    //обязательное указание типа адаптера кеша в нижнем регистре
        'servers' => array(    //список серверов memcached
            array(
                'host' => '',
                'port' => '',    //необязательный параметр, по умолчанию используется значение 11211
                'weight' => '',    //необязательный параметр, по умолчанию используется значение 0
            ),
            array(
                ...
            ),
        ),
    ),
    'alternative' => array(    //если нужна поддержка альтернативных способов кеширования, их параметры конфигурации добавляется с другими (произвольными) ключами
        'type' => 'xcache',    //кеширование с помощью акселератора XCache
        'prefix' => ...    //префикс XCache
    ),
    'alternative2' => array(
        'type' => 'file',    //файловое кеширование с использованием директории, отличной от используемой фреймворком по умолчанию
        'path' => '...',    //путь к директории для хранения к файлам кеша; отличный от стандартного пути wa-cache/apps/
    ),
);

2 ответа

  • 3
    Quasar 17 апреля 2019 13:59 #

    Закинул PR, если нужно - используйте.

    • +1
      Владислав Владислав 17 апреля 2019 14:32 #

      Я не совсем понял, как использовать 

      'db' => 1, // номер базы данных

      Статус ниже. Порт понятен. Что делать с db

      root@adgooroo:~# systemctl status redis-server.service                                                                                                                          
      * redis-server.service - Advanced key-value store
         Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)                                                                                   
         Active: active (running) since Wed 2019-04-17 09:02:19 MSK; 5h 27min ago
           Docs: http://redis.io/documentation,                                                                                                                                       
                 man:redis-server(1)                                                                                                                                                  
       Main PID: 805 (redis-server)                                                                                                                                                   
          Tasks: 4 (limit: 4915)                                                                                                                                                      
         CGroup: /system.slice/redis-server.service                                                                                                                                   
                 `-805 /usr/bin/redis-server 127.0.0.1:6379                                                                                                                           
                                                                                                                                                                                      
      Apr 17 09:02:17 adgooroo systemd[1]: Starting Advanced key-value store...                                                                                                       
      Apr 17 09:02:19 adgooroo systemd[1]: redis-server.service: Can't open PID file /var/run/redis/redis-server.pid (yet?) after start: No such file or directory                    
      Apr 17 09:02:19 adgooroo systemd[1]: Started Advanced key-value store.                                                                                                          
      root@adgooroo:~#

    • +1
      Hane Hane 21 сентября 2019 13:47 #

      Спасибо за реализацию, но получаю такую ошибку:

      Fatal error: Uncaught Error: Class 'Redis' not found in /var/www/html/wa-system/cache/adapters/waRedisCacheAdapter.class.php:20 Stack trace: #0 /var/www/html/wa-system/cache/waCacheAdapter.class.php(12): waRedisCacheAdapter->init() #1 /var/www/html/wa-system/config/waAppConfig.class.php(66): waCacheAdapter->__construct(Array) #2 /var/www/html/wa-system/waSystem.class.php(261): waAppConfig->getCache('default') #3 /var/www/html/wa-system/routing/waRouting.class.php(256): waSystem->getCache() #4 /var/www/html/wa-system/routing/waRouting.class.php(306): waRouting->getPageRoutes('shop', Array) #5 /var/www/html/wa-system/routing/waRouting.class.php(222): waRouting->getAppRoutes('shop', Array, true) #6 /var/www/html/wa-system/waSystem.class.php(755): waRouting->dispatch() #7 /var/www/html/wa-system/waSystem.class.php(570): waSystem->dispatchFrontend('') #8 /var/www/html/index.php(7): waSystem->dispatch() #9 {main} thrown in /var/www/html/wa-system/cache/adapters/waRedisCacheAdapter.class.php on line 20

      Файл waRedisCacheAdapter.class.php выкачан из PR и лежит в wa-system/cache/adapters/

      Строчка с

          'waRedisCacheAdapter'               => 'cache/adapters/waRedisCacheAdapter.class.php', 

      добавлена в wa-system/autoload/system_classes.php

      Конфиг wa-config/cache.php

      <?php
      
      return array(
          'default' =--> array(
              'type' => 'redis',
              'servers' => array(
                  array(
                      'host' => 'redis', // или IP-адрес
                      'port' => '6379', // если порт 0 - то используется Unix Socket
                      'persistent' => true, 
                      'db' => 1, // номер базы данных
                  ),
              )
          )
      );

      Webasyst 8.4.11.20, php 7.2

      Что может быть не так?

      • +1
        Hane Hane 21 сентября 2019 14:21 #

        Отсутствовало расширение php-redis

  • 1
    creativit.ru 11 апреля 2019 21:49 #

    1. Посмотреть существующие классы кеширования

    2. Написать свой класс для использования Redis

    Либо найти исполнителя

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите