feat(core, infrastructure): IRedisCacheService - данные теперь можно архивировать

This commit is contained in:
Mikhail Trubnikov
2026-05-07 12:27:57 +10:00
parent 277bf0caa3
commit 395ef6a0ea
4 changed files with 164 additions and 52 deletions

View File

@@ -5,30 +5,31 @@
/// </summary>
public interface IRedisCacheService
{
/// <summary>
/// Получить кэшированные данные
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
T? GetCachedData<T>(string key);
///// <summary>
///// Получить кэшированные данные
///// </summary>
///// <typeparam name="T"></typeparam>
///// <param name="key"></param>
///// <returns></returns>
//T? GetCachedData<T>(string key);
/// <summary>
/// Получить кэшированные данные асинхронно
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="useCompression">Разрешить сжатие данных</param>
/// <returns></returns>
Task<T?> GetCachedDataAsync<T>(string key);
Task<T?> GetCachedDataAsync<T>(string key, bool useCompression = false);
/// <summary>
/// Добавить в кэш данные
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="data"></param>
/// <param name="cacheDuration"></param>
void SetCachedData<T>(string key, T data, TimeSpan cacheDuration);
///// <summary>
///// Добавить в кэш данные
///// </summary>
///// <typeparam name="T"></typeparam>
///// <param name="key"></param>
///// <param name="data"></param>
///// <param name="cacheDuration"></param>
//void SetCachedData<T>(string key, T data, TimeSpan cacheDuration);
/// <summary>
/// Добавить в кэш данные асинхронно
@@ -38,7 +39,7 @@
/// <param name="data"></param>
/// <param name="cacheDuration"></param>
/// <returns></returns>
Task SetCachedDataAsync<T>(string key, T data, TimeSpan cacheDuration);
Task SetCachedDataAsync<T>(string key, T data, TimeSpan cacheDuration, bool useCompression = false);
/// <summary>
/// Удалить кэшированные данные

View File

@@ -1,6 +1,5 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using NodaTime;
using PARR.Core.Common.Interfaces;
using PARR.Core.Repositories.Interfaces;
using PARR.Core.Services.Shortcodes;
@@ -308,7 +307,7 @@ namespace PARR.Core.Services.Workload.Implementations
{
var key = GetReportCacheKey(reportType, dateStart, durationDays, offset, filterParam);
return await redisCacheService.GetCachedDataAsync<WorkloadReport>(key);
return await redisCacheService.GetCachedDataAsync<WorkloadReport>(key, true);
}
@@ -325,7 +324,7 @@ namespace PARR.Core.Services.Workload.Implementations
public async Task SetWorkloadReport(WorkloadReport report, WorkloadReportType reportType, DateOnly dateStart, int durationDays, TimeSpan offset, string? filterParam)
{
var key = GetReportCacheKey(reportType, dateStart, durationDays, offset, filterParam);
await redisCacheService.SetCachedDataAsync(key, report, cacheWorkloadTtl);
await redisCacheService.SetCachedDataAsync(key, report, cacheWorkloadTtl, true);
}
@@ -377,11 +376,5 @@ namespace PARR.Core.Services.Workload.Implementations
return keyStr;
}
}
}