Skip to content

Commit 45f840f

Browse files
committed
[fix] 修正GetAll时没有接受null数据的问题。fix: https://gitee.com/NewLifeX/NewLife.Redis/issues/ICH8B9
1 parent abc7552 commit 45f840f

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

NewLife.Redis/RedisClient.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,10 @@ public Boolean SetAll<T>(IDictionary<String, T> values)
10841084
{
10851085
dic[keys[i]] = (T?)Host.Encoder.Decode(pk, typeof(T));
10861086
}
1087+
else if (rs[i] == null)
1088+
{
1089+
dic[keys[i]] = default;
1090+
}
10871091
}
10881092

10891093
return dic;

XUnitTest/RedisTest.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,4 +583,27 @@ public void EvalLua2()
583583
ic.Remove(key);
584584

585585
}
586+
587+
[Fact]
588+
public void GetAllWithNull()
589+
{
590+
var rds = _redis;
591+
592+
var user = new User { Name = "NewLife" };
593+
User user2 = null;
594+
rds.Set("user", user, -1);
595+
rds.Set("user2", user2, 3600);
596+
597+
var uservalue = rds.Get<User>("user");
598+
var user2value = rds.Get<User>("user2");
599+
600+
var keys = new[] { "user", "user2" };
601+
var values = rds.GetAll<User>(keys);
602+
603+
// 应该返回2个值,但是GetALl()这里只返回一个key的值
604+
Assert.True(values.Count >= 2);
605+
Assert.NotNull(values["user"]);
606+
Assert.Null(values["user2"]);
607+
Assert.Equal(user.Name, values["user"].Name);
608+
}
586609
}

0 commit comments

Comments
 (0)