Кеширование данных¶
Логика работы¶
Между базовым репозиторием данных dataRepo
и репозиторием данных с проверкой безопасности securedDataRepo
внедрен репозиторий данных с поддержкой кеширования cachedDataRepo
.
Данные загружаются по цепочке: БД -> dataRepo -> cachedDataRepo -> securedDataRepo.
При этом, cachedDataRepo
, при запросе, сначала проверяет наличие данных в кеше (если кеширование активировано), и если данных в кеше нет, запрашивает их у dataRepo
, после чего помещает в кеш и отдает securedDataRepo
.
Настройка кеширования объектов отдельных классов¶
Можно индивидуально в файле настроек конфигурации приложения (deploy.json), в опциях cachedDataRepo
указать список классов, данные которых нужно хранить в кеше.
Пример:¶
...
"options": {
"cachedClasses": ["class1@namespace", "class2@namespace", "class3@namespace"]
}
...
Если cachedClasses не указан, то кешируются все данные.
Кеширование списка объектов¶
Кешируются как индивидуальные обьекты, так и списки.
При кешировании списка на основании его условий выборки (в т.ч. пагинации) формируется ключ, выполняется выборка и все полученные обьекты кешируются индивидуально, а список кешируется как массив идентификаторов обьектов. При выборке списка из кеша на основании этого массива из кеша выбираются соответствующие обьекты и формируется результирующий список.
Аналогично кешируются все объекты по ссылке и коллекции загружаемые жадно.
Настройка гибкого кеширования¶
Для расширенной конфигурации настроек кеширования (таких как, время хранения запросов, глубина хранения объектов в кеше и др.) применяется настройка гибкого кеширования объектов.
Настройка гибкого кеширования задается в файле deploy.json в свойстве "di"
, в компонентах memcached
и redis
в опции connectOptions
.
Все нужные плейсхолдеры прописаны в файле config.json репозитория платформы.
NB: Глубина хранения обьектов в кеше соответствует глубине запроса обьектов из БД, то есть в обьекте хранится информация о его ссылках, а дальше в кеше получается граф обьектов, а не дерево.
Настройка кеширования через ini файл приложения¶
Параметры ini файла:
...
cache.module=redis // - модуль используемый репозиторием данных для кеширования.
//(варианты: ion://memcached, ion://redis, ion://innerCache)
cache.memcached.enabled=true // активируем memcached
cache.memcached.location1 // сервер1
cache.memcached.location2 // сервер2
cache.memcached.timeout // таймаут обращения к кэшу
cache.redis.enabled=true // активируем redis
cache.redis.host=127.0.0.1 // хост redis
cache.redis.port=6379 // порт redis
session.type=redis // хранение сессий авторизации в redis
По умолчанию кеширование не используется.