Skip to content

Commit b2f49c9

Browse files
authored
Merge pull request #310 from dotnetcore/dev
v1.3.0
2 parents 0a69a40 + 95c7465 commit b2f49c9

File tree

8 files changed

+99
-53
lines changed

8 files changed

+99
-53
lines changed

build/version.props

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
<Project>
22
<PropertyGroup>
3-
<EasyCachingCorePackageVersion>1.2.0</EasyCachingCorePackageVersion>
4-
<EasyCachingMemcachedPackageVersion>1.2.0</EasyCachingMemcachedPackageVersion>
5-
<EasyCachingRedisPackageVersion>1.2.1</EasyCachingRedisPackageVersion>
6-
<EasyCachingSQLitePackageVersion>1.2.0</EasyCachingSQLitePackageVersion>
7-
<EasyCachingInMemoryPackageVersion>1.2.0</EasyCachingInMemoryPackageVersion>
8-
<EasyCachingHybridPackageVersion>1.2.0</EasyCachingHybridPackageVersion>
9-
<EasyCachingAspectCorePackageVersion>1.2.0</EasyCachingAspectCorePackageVersion>
10-
<EasyCachingCastlePackageVersion>1.2.0</EasyCachingCastlePackageVersion>
11-
<EasyCachingResponseCachingPackageVersion>1.2.0</EasyCachingResponseCachingPackageVersion>
12-
<EasyCachingJsonPackageVersion>1.2.0</EasyCachingJsonPackageVersion>
13-
<EasyCachingMessagePackPackageVersion>1.2.0</EasyCachingMessagePackPackageVersion>
14-
<EasyCachingProtobufPackageVersion>1.2.0</EasyCachingProtobufPackageVersion>
15-
<EasyCachingCSRedisPackageVersion>1.2.0</EasyCachingCSRedisPackageVersion>
16-
<EasyCachingRedisBusPackageVersion>1.2.0</EasyCachingRedisBusPackageVersion>
17-
<EasyCachingCSRedisBusPackageVersion>1.2.0</EasyCachingCSRedisBusPackageVersion>
18-
<EasyCachingRabbitBusPackageVersion>1.2.0</EasyCachingRabbitBusPackageVersion>
19-
<EasyCachingDiskPackageVersion>1.2.1</EasyCachingDiskPackageVersion>
20-
<EasyCachingMsExtPackageVersion>1.2.0</EasyCachingMsExtPackageVersion>
21-
<EasyCachingLiteDBPackageVersion>1.2.0</EasyCachingLiteDBPackageVersion>
22-
<EasyCachingSTJsonPackageVersion>1.2.0</EasyCachingSTJsonPackageVersion>
3+
<EasyCachingCorePackageVersion>1.3.0</EasyCachingCorePackageVersion>
4+
<EasyCachingMemcachedPackageVersion>1.3.0</EasyCachingMemcachedPackageVersion>
5+
<EasyCachingRedisPackageVersion>1.3.0</EasyCachingRedisPackageVersion>
6+
<EasyCachingSQLitePackageVersion>1.3.0</EasyCachingSQLitePackageVersion>
7+
<EasyCachingInMemoryPackageVersion>1.3.0</EasyCachingInMemoryPackageVersion>
8+
<EasyCachingHybridPackageVersion>1.3.0</EasyCachingHybridPackageVersion>
9+
<EasyCachingAspectCorePackageVersion>1.3.0</EasyCachingAspectCorePackageVersion>
10+
<EasyCachingCastlePackageVersion>1.3.0</EasyCachingCastlePackageVersion>
11+
<EasyCachingResponseCachingPackageVersion>1.3.0</EasyCachingResponseCachingPackageVersion>
12+
<EasyCachingJsonPackageVersion>1.3.0</EasyCachingJsonPackageVersion>
13+
<EasyCachingMessagePackPackageVersion>1.3.0</EasyCachingMessagePackPackageVersion>
14+
<EasyCachingProtobufPackageVersion>1.3.0</EasyCachingProtobufPackageVersion>
15+
<EasyCachingCSRedisPackageVersion>1.3.0</EasyCachingCSRedisPackageVersion>
16+
<EasyCachingRedisBusPackageVersion>1.3.0</EasyCachingRedisBusPackageVersion>
17+
<EasyCachingCSRedisBusPackageVersion>1.3.0</EasyCachingCSRedisBusPackageVersion>
18+
<EasyCachingRabbitBusPackageVersion>1.3.0</EasyCachingRabbitBusPackageVersion>
19+
<EasyCachingDiskPackageVersion>1.3.0</EasyCachingDiskPackageVersion>
20+
<EasyCachingMsExtPackageVersion>1.3.0</EasyCachingMsExtPackageVersion>
21+
<EasyCachingLiteDBPackageVersion>1.3.0</EasyCachingLiteDBPackageVersion>
22+
<EasyCachingSTJsonPackageVersion>1.3.0</EasyCachingSTJsonPackageVersion>
2323
</PropertyGroup>
2424
</Project>

interceptor/EasyCaching.Interceptor.Castle/EasyCachingInterceptor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ private void ProceedAble(IInvocation invocation)
112112
var returnType = serviceMethod.IsReturnTask()
113113
? serviceMethod.ReturnType.GetGenericArguments().First()
114114
: serviceMethod.ReturnType;
115-
115+
116116
var cacheKey = _keyGenerator.GetCacheKey(serviceMethod, invocation.Arguments, attribute.CacheKeyPrefix);
117117

118118
object cacheValue = null;

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

src/EasyCaching.InMemory/DefaultInMemoryCachingProvider.Async.cs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,30 @@ public override async Task<CacheValue<T>> BaseGetAsync<T>(string cacheKey, Func<
4848
return await GetAsync(cacheKey, dataRetriever, expiration);
4949
}
5050

51-
var res = await dataRetriever();
52-
53-
if (res != null || _options.CacheNulls)
51+
try
5452
{
55-
await SetAsync(cacheKey, res, expiration);
56-
//remove mutex key
57-
_cache.Remove($"{cacheKey}_Lock");
58-
59-
return new CacheValue<T>(res, true);
53+
var res = await dataRetriever();
54+
55+
if (res != null || _options.CacheNulls)
56+
{
57+
await SetAsync(cacheKey, res, expiration);
58+
//remove mutex key
59+
_cache.Remove($"{cacheKey}_Lock");
60+
61+
return new CacheValue<T>(res, true);
62+
}
63+
else
64+
{
65+
//remove mutex key
66+
_cache.Remove($"{cacheKey}_Lock");
67+
return CacheValue<T>.NoValue;
68+
}
6069
}
61-
else
70+
catch
6271
{
6372
//remove mutex key
6473
_cache.Remove($"{cacheKey}_Lock");
65-
return CacheValue<T>.NoValue;
74+
throw;
6675
}
6776
}
6877

src/EasyCaching.InMemory/DefaultInMemoryCachingProvider.cs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,21 +117,30 @@ public override CacheValue<T> BaseGet<T>(string cacheKey, Func<T> dataRetriever,
117117
return Get(cacheKey, dataRetriever, expiration);
118118
}
119119

120-
var res = dataRetriever();
121-
122-
if (res != null || _options.CacheNulls)
120+
try
123121
{
124-
Set(cacheKey, res, expiration);
125-
//remove mutex key
126-
_cache.Remove($"{cacheKey}_Lock");
127-
128-
return new CacheValue<T>(res, true);
122+
var res = dataRetriever();
123+
124+
if (res != null || _options.CacheNulls)
125+
{
126+
Set(cacheKey, res, expiration);
127+
//remove mutex key
128+
_cache.Remove($"{cacheKey}_Lock");
129+
130+
return new CacheValue<T>(res, true);
131+
}
132+
else
133+
{
134+
//remove mutex key
135+
_cache.Remove($"{cacheKey}_Lock");
136+
return CacheValue<T>.NoValue;
137+
}
129138
}
130-
else
139+
catch
131140
{
132141
//remove mutex key
133142
_cache.Remove($"{cacheKey}_Lock");
134-
return CacheValue<T>.NoValue;
143+
throw;
135144
}
136145
}
137146

src/EasyCaching.LiteDB/DefaultLiteDBCachingProvider.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,22 +127,27 @@ public override CacheValue<T> BaseGet<T>(string cacheKey, Func<T> dataRetriever,
127127
ArgumentCheck.NotNullOrWhiteSpace(cacheKey, nameof(cacheKey));
128128
ArgumentCheck.NotNegativeOrZero(expiration, nameof(expiration));
129129

130-
var result = BaseGet<T>(cacheKey);
131-
132-
if (result.HasValue)
130+
var cacheItem = _cache.FindOne(c => c.cachekey == cacheKey && c.expiration > DateTimeOffset.Now.ToUnixTimeSeconds());
131+
132+
if (cacheItem != null)
133133
{
134-
return result;
134+
if (_options.EnableLogging)
135+
_logger?.LogInformation($"Cache Hit : cachekey = {cacheKey}");
136+
137+
CacheStats.OnHit();
138+
139+
return new CacheValue<T>(Newtonsoft.Json.JsonConvert.DeserializeObject<T>(cacheItem.cachevalue), true);
135140
}
136141

137142
var item = dataRetriever();
138143

139144
if (item != null || _options.CacheNulls)
140145
{
141146
Set(cacheKey, item, expiration);
142-
result = new CacheValue<T>(item, true);
143-
}
144-
145-
return result;
147+
return new CacheValue<T>(item, true);
148+
}
149+
150+
return CacheValue<T>.NoValue;
146151
}
147152

148153
/// <summary>

src/EasyCaching.Redis/Configurations/RedisDatabaseProvider.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class RedisDatabaseProvider : IRedisDatabaseProvider
1919
/// <summary>
2020
/// The connection multiplexer.
2121
/// </summary>
22-
private readonly Lazy<ConnectionMultiplexer> _connectionMultiplexer;
22+
private Lazy<ConnectionMultiplexer> _connectionMultiplexer;
2323

2424
public RedisDatabaseProvider(string name, RedisOptions options)
2525
{
@@ -37,7 +37,15 @@ public RedisDatabaseProvider(string name, RedisOptions options)
3737
/// </summary>
3838
public IDatabase GetDatabase()
3939
{
40-
return _connectionMultiplexer.Value.GetDatabase();
40+
try
41+
{
42+
return _connectionMultiplexer.Value.GetDatabase();
43+
}
44+
catch (Exception)
45+
{
46+
_connectionMultiplexer = new Lazy<ConnectionMultiplexer>(CreateConnectionMultiplexer);
47+
throw;
48+
}
4149
}
4250

4351
/// <summary>

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)