Skip to content

Commit db20f02

Browse files
authored
fix/redis: fix query error (#185)
* feat: Add AppConfig * refactor: refactor AppConfig * feat: Initialize Framework configuration * feat(Configuration): Add Global Configuration * rename: Masa.EventBus.IntegrationTests rename to Masa.Framework.IntegrationTests.EventBus * refactor(Configuration): Adjust default variables and default values * chroe: delete extra space * fix(redis): fix query error
1 parent 2cc1f3d commit db20f02

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

src/Utils/Caching/Distributed/Masa.Utils.Caching.Redis/RedisCacheClient.cs

+24-2
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ public async Task<List<string>> GetKeysAsync(string keyPattern)
367367
foreach (var redisResult in arrayRedisResult)
368368
{
369369
var byteArray = (RedisValue[])redisResult.Value;
370-
MapMetadata(byteArray, out DateTimeOffset? absExpr, out TimeSpan? sldExpr, out RedisValue data);
370+
MapMetadataByAutomatic(byteArray, out DateTimeOffset? absExpr, out TimeSpan? sldExpr, out RedisValue data);
371371
func.Invoke(redisResult.Key, absExpr, sldExpr);
372372
dictionary.Add(redisResult.Key, ConvertToValue<T>(data));
373373
}
@@ -535,7 +535,29 @@ private void RefreshCore(
535535
}
536536
}
537537

538-
private static void MapMetadata(RedisValue[] results, out DateTimeOffset? absoluteExpiration, out TimeSpan? slidingExpiration,
538+
private static void MapMetadata(RedisValue[] results,
539+
out DateTimeOffset? absoluteExpiration,
540+
out TimeSpan? slidingExpiration,
541+
out RedisValue data)
542+
{
543+
absoluteExpiration = null;
544+
slidingExpiration = null;
545+
data = results.Length > 2 ? results[2] : RedisValue.Null;
546+
var absoluteExpirationTicks = (long?)results[0];
547+
if (absoluteExpirationTicks.HasValue && absoluteExpirationTicks.Value != NOT_PRESENT)
548+
{
549+
absoluteExpiration = new DateTimeOffset(absoluteExpirationTicks.Value, TimeSpan.Zero);
550+
}
551+
552+
var slidingExpirationTicks = (long?)results[1];
553+
if (slidingExpirationTicks.HasValue && slidingExpirationTicks.Value != NOT_PRESENT)
554+
{
555+
slidingExpiration = new TimeSpan(slidingExpirationTicks.Value);
556+
}
557+
}
558+
559+
private static void MapMetadataByAutomatic(RedisValue[] results, out DateTimeOffset? absoluteExpiration,
560+
out TimeSpan? slidingExpiration,
539561
out RedisValue data)
540562
{
541563
absoluteExpiration = null;

src/Utils/Caching/Distributed/Tests/Masa.Utils.Caching.Redis.Tests/DistributedCacheClientTest.cs

+18
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,22 @@ public async Task TestGetListByKeyPatternAsyncReturnCountIs1()
5858
Assert.AreEqual(1, dictionary.Count);
5959
Assert.IsTrue(dictionary["test1"] == "test1:Result");
6060
}
61+
62+
[DataTestMethod]
63+
[DataRow("test1", "Result1")]
64+
public async Task TestGetAsyncReturnResult1(string key, string value)
65+
{
66+
_cacheClient.Set(key, value);
67+
var res = await _cacheClient.GetAsync<string>(key);
68+
Assert.AreEqual(value, res);
69+
}
70+
71+
[DataTestMethod]
72+
[DataRow("test1", "Result1")]
73+
public void TestGetReturnResult1(string key, string value)
74+
{
75+
_cacheClient.Set(key, value);
76+
var res = _cacheClient.Get<string>(key);
77+
Assert.AreEqual(value, res);
78+
}
6179
}

0 commit comments

Comments
 (0)