将10万Redis的Hash表数据读取优化到13秒以内。

This commit is contained in:
ChenYi 2025-04-17 08:29:32 +08:00
parent 78127f7cea
commit cadb69f4b9

View File

@ -492,20 +492,14 @@ return {#result_members, result_members, result_scores, hash_data}";
var scores = ((object[])scriptResult[2]).Cast<string>().Select(decimal.Parse).ToList(); var scores = ((object[])scriptResult[2]).Cast<string>().Select(decimal.Parse).ToList();
var hashData = ((object[])scriptResult[3]).Cast<string>().ToList(); var hashData = ((object[])scriptResult[3]).Cast<string>().ToList();
var validItems = members.Select((m, i) => var validItems = members.AsParallel()
.Select((m, i) =>
{ {
try try { return BusJsonSerializer.Deserialize<T>(hashData[i]); }
{ catch { return null; }
return !string.IsNullOrEmpty(hashData[i]) })
? BusJsonSerializer.Deserialize<T>(hashData[i]) .Where(x => x != null)
: null; .ToList();
}
catch (Exception ex)
{
_logger.LogError($"反序列化失败: {m} - {ex.Message}");
return null;
}
}).Where(x => x != null).ToList();
var hasNext = validItems.Count > pageSize; var hasNext = validItems.Count > pageSize;
var actualItems = hasNext ? validItems.Take(pageSize) : validItems; var actualItems = hasNext ? validItems.Take(pageSize) : validItems;