79 lines
2.8 KiB
PHP
79 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
/**
|
|
* Базовый класс для работы с Redis в контексте модульной структуры платформы
|
|
*/
|
|
abstract class RedisBaseService
|
|
{
|
|
/**
|
|
* @var string базовое подключение к Redis. Руками не прописывается, устанавливается в конструкторе дочернего сервиса через недоступный из фасада метод protected connection(). Сделано это, чтобы разработчик не указывал вручную подключение каждый раз b при этом любой дочерний сервис был обязан прописывать подключение
|
|
*/
|
|
protected string $connection;
|
|
/**
|
|
* @var int базовый ttl для данных с ограниченным сроком жизни
|
|
*/
|
|
public int $ttl = 600;
|
|
/**
|
|
* @var string имя модуля/приложения откуда отправляются данные. Передается в инициилизирующем методе module(). Значение '' означает, что данные отправляются из корня проекта, не из модуля
|
|
*/
|
|
public string $moduleName;
|
|
|
|
|
|
/**
|
|
* Метод установки подключения к Redis. В какую БД кладем данные
|
|
*
|
|
* @param string $connection имя подключения
|
|
* @return void
|
|
*/
|
|
abstract protected function connection(string $connection): void;
|
|
|
|
|
|
/**
|
|
* Инициилизирующий метод фасада, принимающий аргумент в виде названия модуля, откуда планируется отправить данные.
|
|
*
|
|
* @param string $moduleName имя модуля, откуда передаются данные. Аргумент можно не передавать, если данные передаются из корня ларавель
|
|
* @return self
|
|
*/
|
|
public function module(string $moduleName = ''): self
|
|
{
|
|
$this->moduleName = $moduleName;
|
|
|
|
return $this;
|
|
}
|
|
|
|
|
|
/**
|
|
* Меняем ttl данных
|
|
*
|
|
* @param int $ttl время жизни записи с данными
|
|
* @return self
|
|
*/
|
|
public function ttl(int $ttl): self
|
|
{
|
|
$this->ttl = $ttl;
|
|
|
|
return $this;
|
|
}
|
|
|
|
|
|
/**
|
|
* Возвращает часть префикса ключа redis для хранения информации, отправленной из модуля
|
|
*
|
|
* @return string
|
|
*/
|
|
protected function getModuleRedisPrefix(): string
|
|
{
|
|
return "_" . $this->moduleName . ":";
|
|
}
|
|
|
|
|
|
/**
|
|
* Реализация размещения данных в Redis
|
|
*
|
|
* @return void
|
|
*/
|
|
abstract public function put(): void;
|
|
}
|