diff --git a/XUnitTest/HashTest.cs b/XUnitTest/HashTest.cs index bd3e379..2a680c4 100644 --- a/XUnitTest/HashTest.cs +++ b/XUnitTest/HashTest.cs @@ -1,8 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; + using NewLife.Caching; using NewLife.Log; +using NewLife.Serialization; + using Xunit; namespace XUnitTest; @@ -111,6 +114,35 @@ public class HashTest rh["0"] = new EventInfo { EventId = "1234", EventName = "Stone" }; } + [Fact(DisplayName = "获取所有数据,丢失数据bug")] + public void ValuesHashTest() + { + //RedisHash、RedisList[Values、Values、GetAll、Search] redis 5.0 都有类似的情况 + //大批量数据获取,大概率会数据不完整,具体原有不明 + var key = $"NewLife:HashTestInfo:Test"; + { + _redis.MaxMessageSize = int.MaxValue; + var hash = _redis.GetDictionary(key) as RedisHash; + hash.Clear(); + for (var i = 0; i < 10000; i++) + { + var k = i.ToString(); + hash.Add(k, new EventInfo { EventId = k, EventName = k }.ToJson()); + } + + //直接获取全部数据,如泛型对象的直接报错 + var list = hash.Values.ToList(); + for (var i = 0; i < list.Count; i++) + { + try { var item = list[i].ToJsonEntity(); } + catch (Exception ex) + { + //某块连续的数据段可能会不完整 + Assert.Fail($"Index:{i} Item:{list[i]} Msg:{ex.Message}"); + } + } + } + } [Fact] public void RemoveTest()