优化字符串数组和Object数组使用,减少GC分配

This commit is contained in:
大石头 2025-02-02 10:52:23 +08:00
parent 868f994cdd
commit 1b16e8369d
2 changed files with 30 additions and 25 deletions

View File

@ -470,7 +470,11 @@ public class FullRedis : Redis
{ {
if (keys == null || keys.Length == 0) return 0; if (keys == null || keys.Length == 0) return 0;
keys = keys.Select(GetKey).ToArray(); //keys = keys.Select(GetKey).ToArray();
for (var i = 0; i < keys.Length; i++)
{
keys[i] = GetKey(keys[i]);
}
if (keys.Length == 1) return base.Remove(keys[0]); if (keys.Length == 1) return base.Remove(keys[0]);
InitCluster(); InitCluster();
@ -481,7 +485,7 @@ public class FullRedis : Redis
} }
else else
{ {
return Execute(keys.FirstOrDefault(), (rds, k) => rds.Execute<Int32>("DEL", keys), true); return Execute(keys[0], (rds, k) => rds.Execute<Int32>("DEL", keys), true);
} }
} }
#endregion #endregion

View File

@ -999,16 +999,17 @@ public class RedisClient : DisposeBase
{ {
if (values == null || values.Count == 0) throw new ArgumentNullException(nameof(values)); if (values == null || values.Count == 0) throw new ArgumentNullException(nameof(values));
var ps = new List<Object>(); var k = 0;
var ps = new Object[values.Count * 2];
foreach (var item in values) foreach (var item in values)
{ {
ps.Add(item.Key); ps[k++] = item.Key;
if (item.Value == null) throw new NullReferenceException(); if (item.Value == null) throw new NullReferenceException();
ps.Add(item.Value); ps[k++] = item.Value;
} }
var rs = Execute<String>("MSET", ps.ToArray()); var rs = Execute<String>("MSET", ps);
if (rs != "OK") if (rs != "OK")
{ {
using var span = Host.Tracer?.NewSpan($"redis:{Name}:ErrorSetAll", values); using var span = Host.Tracer?.NewSpan($"redis:{Name}:ErrorSetAll", values);