Skip to content

Commit 634b4b9

Browse files
committed
fix: CSRedisCachingProvider设置CacheNulls=true导致GetAsync永远返回CacheValue.Null #223
* dataRetriever返回非空时候导致默认反序列化出现空对象异常 * dataRetriever返回非空时候不应该返回CacheValue.Null Closes #307
1 parent 1dfa524 commit 634b4b9

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/EasyCaching.CSRedis/DefaultCSRedisCachingProvider.Async.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public override async Task<CacheValue<T>> BaseGetAsync<T>(string cacheKey, Func<
7474
ArgumentCheck.NotNegativeOrZero(expiration, nameof(expiration));
7575

7676
var result = await _cache.GetAsync<byte[]>(cacheKey);
77-
if (result != null || _options.CacheNulls)
77+
if (result != null)
7878
{
7979
CacheStats.OnHit();
8080

test/EasyCaching.UnitTests/CachingTests/BaseCachingProviderTest.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,12 +521,27 @@ public void Get_Not_Cached_Value_Should_Call_Retriever_And_Return_Null_With_Cach
521521

522522
var res = _providerWithNullsCached.Get(cacheKey, func, _defaultTs);
523523

524-
Assert.Equal(default(string),res.Value);
524+
Assert.Equal(default(string), res.Value);
525525
var cachedValue = _providerWithNullsCached.Get<string>(cacheKey);
526526
Assert.True(cachedValue.HasValue);
527527
Assert.Null(cachedValue.Value);
528528
}
529529

530+
[Fact]
531+
public async Task Get_Cached_Value_Async_Should_Call_Retriever_And_Return_String_With_Caching_When_Nulls_Are_Cached()
532+
{
533+
var cacheKey = $"{_nameSpace}{Guid.NewGuid().ToString()}";
534+
var func = Create_Fake_Retriever_Return_String_Async();
535+
536+
var res = await _providerWithNullsCached.GetAsync(cacheKey, func, _defaultTs);
537+
538+
Assert.Equal("123", res.Value);
539+
var cachedValue = await _providerWithNullsCached.GetAsync<string>(cacheKey);
540+
Assert.True(cachedValue.HasValue);
541+
Assert.NotNull(cachedValue.Value);
542+
Assert.Equal("123", cachedValue.Value);
543+
}
544+
530545
[Fact]
531546
public void Get_Cached_Value_Should_Not_Call_Retriever()
532547
{

0 commit comments

Comments
 (0)