Skip to content

Commit e4fcca6

Browse files
committed
RedisHash-Values数据丢失bug
1 parent 45f840f commit e4fcca6

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

XUnitTest/HashTest.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
45
using NewLife.Caching;
56
using NewLife.Log;
7+
using NewLife.Serialization;
8+
69
using Xunit;
710

811
namespace XUnitTest;
@@ -111,6 +114,35 @@ public void CheckHashTest()
111114

112115
rh["0"] = new EventInfo { EventId = "1234", EventName = "Stone" };
113116
}
117+
[Fact(DisplayName = "获取所有数据,丢失数据bug")]
118+
public void ValuesHashTest()
119+
{
120+
//RedisHash、RedisList[Values、Values、GetAll、Search] redis 5.0 都有类似的情况
121+
//大批量数据获取,大概率会数据不完整,具体原有不明
122+
var key = $"NewLife:HashTestInfo:Test";
123+
{
124+
_redis.MaxMessageSize = int.MaxValue;
125+
var hash = _redis.GetDictionary<string>(key) as RedisHash<string, string>;
126+
hash.Clear();
127+
for (var i = 0; i < 10000; i++)
128+
{
129+
var k = i.ToString();
130+
hash.Add(k, new EventInfo { EventId = k, EventName = k }.ToJson());
131+
}
132+
133+
//直接获取全部数据,如泛型对象的直接报错
134+
var list = hash.Values.ToList();
135+
for (var i = 0; i < list.Count; i++)
136+
{
137+
try { var item = list[i].ToJsonEntity<EventInfo>(); }
138+
catch (Exception ex)
139+
{
140+
//某块连续的数据段可能会不完整
141+
Assert.Fail($"Index:{i} Item:{list[i]} Msg:{ex.Message}");
142+
}
143+
}
144+
}
145+
}
114146

115147
[Fact]
116148
public void RemoveTest()

0 commit comments

Comments
 (0)