namespace PARR.DAL.Cache.Services.Base
{
public interface IRedisCacheService
{
///
/// Получить кэшированные данные
///
///
///
///
T? GetCachedData(string key);
///
/// Получить кэшированные данные асинхронно
///
///
///
///
Task GetCachedDataAsync(string key);
///
/// Добавить в кэш данные
///
///
///
///
///
void SetCachedData(string key, T data, TimeSpan cacheDuration);
///
/// Добавить в кэш данные асинхронно
///
///
///
///
///
///
Task SetCachedDataAsync(string key, T data, TimeSpan cacheDuration);
///
/// Удалить кэшированные данные
///
///
void DeleteCachedData(string key);
///
/// Удалить кэшированные данные асинхронно
///
///
///
Task DeleteCachedDataAsync(string key);
///
/// Сгенерировать уникальный ключ
///
///
///
///
string GetKey(string[] keyParts, bool isUseHash = false);
#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> 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
}
}