namespace PARR.Core.Common.Interfaces
{
///
/// Сервис по управлению КЭШ
///
public interface IRedisCacheService
{
/////
///// Получить кэшированные данные
/////
/////
/////
/////
//T? GetCachedData(string key);
///
/// Получить кэшированные данные асинхронно
///
///
///
/// Разрешить сжатие данных
///
Task GetCachedDataAsync(string key, bool useCompression = false);
/////
///// Добавить в кэш данные
/////
/////
/////
/////
/////
//void SetCachedData(string key, T data, TimeSpan cacheDuration);
///
/// Добавить в кэш данные асинхронно
///
///
///
///
///
///
Task SetCachedDataAsync(string key, T data, TimeSpan cacheDuration, bool useCompression = false);
///
/// Удалить кэшированные данные
///
///
void DeleteCachedData(string key);
///
/// Удалить кэшированные данные асинхронно
///
///
///
Task DeleteCachedDataAsync(string key);
///
/// Сгенерировать уникальный ключ
///
///
///
///
string GetKey(string[] keyParts, string[]? keyPartsToHash = null);
///
/// Удалить ключи по маске (template*)
///
///
///
///
Task DeleteKeysByPatternAsync(string pattern, int batchSize = 100);
#region Работа с Hash
///
/// Изменить одно поле в Hash
///
///
///
///
///
/// Если указано, обновится у всего Hash. Если не указано и hash не существовал, создастся Hash с бесокнечным ttl
///
Task SetHashFieldAsync(string hashKey, string field, T value, TimeSpan? ttl = null);
///
/// Получить значение поля из Hash
///
///
///
///
///
Task GetHashFieldAsync(string hashKey, string field);
///
/// Получить случайную первую запись из Hash
///
///
///
///
Task<(string Field, T? Value)?> GetFirstHashFieldAsync(string hashKey);
///
/// Получить все значения из Hash
///
///
///
///
Task> GetAllHashFieldsAsync(string hashKey);
///
/// Удалить одну запись из Hash
///
///
///
///
Task DeleteHashFieldAsync(string hashKey, string field);
///
/// Есть ли запись в Hash
///
///
///
///
Task HashFieldExistsAsync(string hashKey, string field);
///
/// Удалить весь Hash
///
///
///
Task DeleteHashAsync(string hashKey);
///
/// Получить количество записей в Hash
///
///
///
Task GetHashLengthAsync(string hashKey);
///
/// Установить TTL для Hash
///
///
///
///
Task SetHashTtlAsync(string hashKey, TimeSpan ttl);
#endregion
}
}