diff --git a/PARR.DAL/Cache/Services/Base/IRedisCacheService.cs b/PARR.DAL/Cache/Services/Base/IRedisCacheService.cs
index 881fdf8a..c16c5d12 100644
--- a/PARR.DAL/Cache/Services/Base/IRedisCacheService.cs
+++ b/PARR.DAL/Cache/Services/Base/IRedisCacheService.cs
@@ -54,8 +54,8 @@
/// Сгенерировать уникальный ключ
///
///
- ///
+ ///
///
- string GetKey(string[] keyParts, bool isUseHash = false);
+ string GetKey(string[] keyParts, string[]? keyPartsToHash = null);
}
}
diff --git a/PARR.DAL/Cache/Services/Base/RedisCacheService.cs b/PARR.DAL/Cache/Services/Base/RedisCacheService.cs
index 38c902be..9516a1f9 100644
--- a/PARR.DAL/Cache/Services/Base/RedisCacheService.cs
+++ b/PARR.DAL/Cache/Services/Base/RedisCacheService.cs
@@ -70,25 +70,33 @@ namespace PARR.DAL.Cache.Services.Base
}
- public string GetKey(string[] keyParts, bool isUseHash = false)
+ public string GetKey(string[] keyParts, string[]? keyPartsToHash = null)
{
+ // разделитель между ИД
+ var mainSeparator = "_";
+ // разделитель между словами
+ var wordSeparator = "-";
+
if (keyParts.Length == 0)
{
throw new ArgumentNullException("keyParts не может быть пустым");
}
- var keyStr = string.Join("_", keyParts);
+ var keyStr = string.Join(mainSeparator, keyParts).Replace(" ", wordSeparator);
- if (isUseHash)
+ if (keyPartsToHash != null && keyPartsToHash.Length > 0)
{
- using var sha256 = System.Security.Cryptography.SHA256.Create();
- var hashedBytes = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(keyStr));
+ var partsToHashStr = string.Join(mainSeparator, keyPartsToHash).Replace(" ", wordSeparator);
- // return Convert.ToBase64String(hashedBytes).Replace('+', '-').Replace('/', '_').Substring(0, 16);
- return Convert.ToBase64String(hashedBytes).Substring(0, 16);
+ using var sha256 = System.Security.Cryptography.SHA256.Create();
+ var hashedBytes = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(partsToHashStr));
+
+ var base64str = Convert.ToBase64String(hashedBytes).Substring(0, 16);
+
+ return (keyStr + mainSeparator + base64str).ToLower();
}
- return keyStr;
+ return keyStr.ToLower();
}
}
diff --git a/PARR.DAL/DomainServices/Implementations/MatchingStatusService.cs b/PARR.DAL/DomainServices/Implementations/MatchingStatusService.cs
index 799236e1..deea3cb4 100644
--- a/PARR.DAL/DomainServices/Implementations/MatchingStatusService.cs
+++ b/PARR.DAL/DomainServices/Implementations/MatchingStatusService.cs
@@ -102,19 +102,19 @@ namespace PARR.DAL.DomainServices.Implementations
switch (type)
{
case SyncTaskEntityTypeEnum.Job:
- typeStr = "j";
+ typeStr = "job";
break;
case SyncTaskEntityTypeEnum.JobGroup:
- typeStr = "g";
+ typeStr = "group";
break;
case SyncTaskEntityTypeEnum.Template:
- typeStr = "t";
+ typeStr = "template";
break;
default:
break;
}
- return redisCacheService.GetKey(new string[] { "ms", typeStr, id.ToString() });
+ return redisCacheService.GetKey(new string[] { "matching", typeStr, id.ToString() });
}
}
}
diff --git a/PARR.DAL/DomainServices/UnitFilterService/UnitFilterService.cs b/PARR.DAL/DomainServices/UnitFilterService/UnitFilterService.cs
index ea19feed..e8299f49 100644
--- a/PARR.DAL/DomainServices/UnitFilterService/UnitFilterService.cs
+++ b/PARR.DAL/DomainServices/UnitFilterService/UnitFilterService.cs
@@ -962,7 +962,8 @@ internal class UnitFilterService : IUnitFilterService
private async Task> GetUnitIdsFromCacheOrDbAsync(JobUnitFilter filter, CancellationToken cancellationToken = default)
{
- var cacheKey = cacheService.GetKey(new[] { "uf_ids", filter.UnitFilter }, isUseHash: true);
+ // var cacheKey = cacheService.GetKey(new[] { "uf_ids", filter.UnitFilter }, isUseHash: true);
+ var cacheKey = cacheService.GetKey(new[] { "unit filter", "unit name mask" }, new[] { filter.UnitFilter });
var cachedData = await cacheService.GetCachedDataAsync(cacheKey);
if (cachedData != null)