diff --git a/NewLife.Redis/Clusters/RedisReplication.cs b/NewLife.Redis/Clusters/RedisReplication.cs index b7e102b..4efbf49 100644 --- a/NewLife.Redis/Clusters/RedisReplication.cs +++ b/NewLife.Redis/Clusters/RedisReplication.cs @@ -1,5 +1,4 @@ -using System.Net.Sockets; -using NewLife.Log; +using NewLife.Log; using NewLife.Net; using NewLife.Threading; @@ -13,7 +12,7 @@ public class RedisReplication : RedisBase, IRedisCluster, IDisposable IList IRedisCluster.Nodes => Nodes.Select(x => (IRedisNode)x).ToList(); /// 节点改变事件 - public event EventHandler NodeChanged; + public event EventHandler? NodeChanged; /// 集群节点 public RedisNode[]? Nodes { get; protected set; } diff --git a/NewLife.Redis/RedisClient.cs b/NewLife.Redis/RedisClient.cs index e7c7b37..a9dfb3f 100644 --- a/NewLife.Redis/RedisClient.cs +++ b/NewLife.Redis/RedisClient.cs @@ -1,6 +1,5 @@ using System.Buffers; using System.Collections.Concurrent; -using System.Collections.Generic; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; @@ -690,8 +689,9 @@ public class RedisClient : DisposeBase if (rs is TResult rs2) return rs2; if (TryChangeType(rs, typeof(TResult), out var target)) { - // 释放内部申请的OwnerPacket - rs.TryDispose(); + //!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放 + //// 释放内部申请的OwnerPacket + //rs.TryDispose(); return (TResult?)target; } @@ -727,8 +727,9 @@ public class RedisClient : DisposeBase if (rs == null) return false; if (TryChangeType(rs, typeof(TResult), out var target)) { - // 释放内部申请的OwnerPacket - rs.TryDispose(); + //!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放 + //// 释放内部申请的OwnerPacket + //rs.TryDispose(); value = (TResult?)target; return true; } @@ -788,8 +789,9 @@ public class RedisClient : DisposeBase if (rs is TResult rs2) return rs2; if (TryChangeType(rs, typeof(TResult), out var target)) { - // 释放内部申请的OwnerPacket - rs.TryDispose(); + //!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放 + //// 释放内部申请的OwnerPacket + //rs.TryDispose(); return (TResult?)target; } @@ -939,8 +941,9 @@ public class RedisClient : DisposeBase var rs = list[i]; if (rs != null && TryChangeType(rs, ps[i].Type, out var target) && target != null) { - // 释放内部申请的OwnerPacket - rs.TryDispose(); + //!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放 + //// 释放内部申请的OwnerPacket + //rs.TryDispose(); list[i] = target; } } diff --git a/XUnitTest/HashTest.cs b/XUnitTest/HashTest.cs index b0db7e1..760e4eb 100644 --- a/XUnitTest/HashTest.cs +++ b/XUnitTest/HashTest.cs @@ -1,9 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reflection; -using System.Runtime.Intrinsics.Arm; - using NewLife.Caching; using NewLife.Log; using Xunit; @@ -105,14 +102,20 @@ public class HashTest var hash = _redis.GetDictionary(key); Assert.NotNull(hash); - var l = hash as RedisHash; + var rh = hash as RedisHash; - foreach(var item in l.GetAll()) + foreach (var item in rh.GetAll()) { XTrace.WriteLine(item.Key); } - l["0"] = "0"; + rh["0"] = new EventInfo { EventId = "1234", EventName = "Stone" }; + } + + class EventInfo + { + public String? EventId { get; set; } + public String? EventName { get; set; } } }