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 } }