Skip to content

Commit c842bfe

Browse files
authored
Merge pull request #327 from dotnetcore/dev
v1.4.1
2 parents 159a930 + d93f7ba commit c842bfe

22 files changed

+221
-54
lines changed

build/releasenotes.props

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
<Project>
22
<PropertyGroup>
33
<EasyCachingCorePackageNotes>
4-
1. Support distributed lock.
4+
1. Expose raw cache database.
55
</EasyCachingCorePackageNotes>
66
<EasyCachingMemcachedPackageNotes>
7-
1. Support distributed lock.
7+
1. Expose raw cache database.
88
</EasyCachingMemcachedPackageNotes>
99
<EasyCachingRedisPackageNotes>
10-
1. Support distributed lock.
10+
1. Expose raw cache database.
11+
2. Support KeyPrefix.
1112
</EasyCachingRedisPackageNotes>
1213
<EasyCachingSQLitePackageNotes>
13-
1. Upgrading dependencies.
14+
1. Expose raw cache database.
1415
</EasyCachingSQLitePackageNotes>
1516
<EasyCachingInMemoryPackageNotes>
16-
1. Upgrading dependencies.
17+
1. Expose raw cache database.
1718
</EasyCachingInMemoryPackageNotes>
1819
<EasyCachingHybridPackageNotes>
1920
1. Upgrading dependencies.
@@ -52,7 +53,7 @@
5253
1. Upgrading dependencies.
5354
</EasyCachingDiskPackageNotes>
5455
<EasyCachingLiteDBPackageNotes>
55-
1. Upgrading dependencies.
56+
1. Expose raw cache database.
5657
</EasyCachingLiteDBPackageNotes>
5758
<EasyCachingSTJsonPackageNotes>
5859
1. Upgrading dependencies.

build/version.props

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

src/EasyCaching.CSRedis/DefaultCSRedisCachingProvider.cs

+4-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using EasyCaching.Core;
44
using EasyCaching.Core.DistributedLock;
55
using EasyCaching.Core.Serialization;
6-
using EasyCaching.CSRedis.DistributedLock;
6+
using EasyCaching.CSRedis.DistributedLock;
77
using global::CSRedis;
88
using Microsoft.Extensions.Logging;
99
using System;
@@ -482,9 +482,8 @@ public override TimeSpan BaseGetExpiration(string cacheKey)
482482
/// Get te information of this provider.
483483
/// </summary>
484484
/// <returns></returns>
485-
public override ProviderInfo BaseGetProviderInfo()
486-
{
487-
return _info;
488-
}
485+
public override ProviderInfo BaseGetProviderInfo() => _info;
486+
487+
public override object BaseGetDatabse() => _cache;
489488
}
490489
}

src/EasyCaching.Core/EasyCachingAbstractProvider.cs

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public abstract class EasyCachingAbstractProvider : IEasyCachingProvider
3131
public CachingProviderType CachingProviderType => this.ProviderType;
3232
public CacheStats CacheStats => this.ProviderStats;
3333

34+
public object Database => BaseGetDatabse();
35+
3436
protected EasyCachingAbstractProvider() { }
3537

3638
protected EasyCachingAbstractProvider(IDistributedLockFactory lockFactory, BaseProviderOptions options)
@@ -39,6 +41,7 @@ protected EasyCachingAbstractProvider(IDistributedLockFactory lockFactory, BaseP
3941
_options = options;
4042
}
4143

44+
public abstract object BaseGetDatabse();
4245
public abstract bool BaseExists(string cacheKey);
4346
public abstract Task<bool> BaseExistsAsync(string cacheKey);
4447
public abstract void BaseFlush();

src/EasyCaching.Core/IEasyCachingProvider.cs

+5
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,10 @@ public interface IEasyCachingProvider : IEasyCachingProviderBase
115115
/// </summary>
116116
/// <returns></returns>
117117
ProviderInfo GetProviderInfo();
118+
119+
/// <summary>
120+
/// Get or sets the provider's database
121+
/// </summary>
122+
object Database { get; }
118123
}
119124
}

src/EasyCaching.Disk/DefaultDiskCachingProvider.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -673,9 +673,8 @@ private void DeleteDirectory(string path)
673673
}
674674
}
675675

676-
public override ProviderInfo BaseGetProviderInfo()
677-
{
678-
return _info;
679-
}
676+
public override ProviderInfo BaseGetProviderInfo() => _info;
677+
678+
public override object BaseGetDatabse() => throw new Exception("Disk provider don't support this ");
680679
}
681680
}

src/EasyCaching.InMemory/DefaultInMemoryCachingProvider.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,8 @@ public override TimeSpan BaseGetExpiration(string cacheKey)
375375
/// Get te information of this provider.
376376
/// </summary>
377377
/// <returns></returns>
378-
public override ProviderInfo BaseGetProviderInfo()
379-
{
380-
return _info;
381-
}
378+
public override ProviderInfo BaseGetProviderInfo() => _info;
379+
380+
public override object BaseGetDatabse() => _cache;
382381
}
383382
}

src/EasyCaching.LiteDB/DefaultLiteDBCachingProvider.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,8 @@ public override TimeSpan BaseGetExpiration(string cacheKey)
402402
/// Get te information of this provider.
403403
/// </summary>
404404
/// <returns></returns>
405-
public override ProviderInfo BaseGetProviderInfo()
406-
{
407-
return _info;
408-
}
405+
public override ProviderInfo BaseGetProviderInfo() => _info;
406+
407+
public override object BaseGetDatabse() => _cache;
409408
}
410409
}

src/EasyCaching.Memcached/DefaultMemcachedCachingProvider.cs

+2
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,8 @@ public override ProviderInfo BaseGetProviderInfo()
412412
return _info;
413413
}
414414

415+
public override object BaseGetDatabse() => _memcachedClient;
416+
415417
private void OnCacheHit(string cacheKey)
416418
{
417419
CacheStats.OnHit();

src/EasyCaching.Redis/Configurations/RedisDBOptions.cs

+5
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,10 @@ public class RedisDBOptions : BaseRedisOptions
2424
/// Specifies the time in milliseconds that the system should allow for synchronous operations (defaults to 5 seconds)
2525
/// </summary>
2626
public int SyncTimeout { get; set; }
27+
28+
/// <summary>
29+
/// Gets or sets the Redis database KeyPrefix will use.
30+
/// </summary>
31+
public string KeyPrefix { get; set; }
2732
}
2833
}

src/EasyCaching.Redis/Configurations/RedisDatabaseProvider.cs

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace EasyCaching.Redis
22
{
33
using StackExchange.Redis;
4+
using StackExchange.Redis.KeyspaceIsolation;
45
using System;
56
using System.Collections.Generic;
67
using System.Linq;
@@ -20,7 +21,7 @@ public class RedisDatabaseProvider : IRedisDatabaseProvider
2021
/// The connection multiplexer.
2122
/// </summary>
2223
private Lazy<ConnectionMultiplexer> _connectionMultiplexer;
23-
24+
2425
public RedisDatabaseProvider(string name, RedisOptions options)
2526
{
2627
_options = options.DBConfig;
@@ -39,7 +40,11 @@ public IDatabase GetDatabase()
3940
{
4041
try
4142
{
42-
return _connectionMultiplexer.Value.GetDatabase();
43+
44+
var database = _connectionMultiplexer.Value.GetDatabase();
45+
if (!string.IsNullOrEmpty(_options.KeyPrefix))
46+
database = database.WithKeyPrefix(_options.KeyPrefix);
47+
return database;
4348
}
4449
catch (Exception)
4550
{

src/EasyCaching.Redis/DefaultRedisCachingProvider.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -512,9 +512,8 @@ public override TimeSpan BaseGetExpiration(string cacheKey)
512512
/// Get te information of this provider.
513513
/// </summary>
514514
/// <returns></returns>
515-
public override ProviderInfo BaseGetProviderInfo()
516-
{
517-
return _info;
518-
}
515+
public override ProviderInfo BaseGetProviderInfo() => _info;
516+
517+
public override object BaseGetDatabse() => _cache;
519518
}
520519
}

src/EasyCaching.SQLite/DefaultSQLiteCachingProvider.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -413,9 +413,8 @@ public override TimeSpan BaseGetExpiration(string cacheKey)
413413
/// Get te information of this provider.
414414
/// </summary>
415415
/// <returns></returns>
416-
public override ProviderInfo BaseGetProviderInfo()
417-
{
418-
return _info;
419-
}
416+
public override ProviderInfo BaseGetProviderInfo() => _info;
417+
418+
public override object BaseGetDatabse() => _cache;
420419
}
421420
}

test/EasyCaching.UnitTests/CachingTests/CSRedisCachingProviderTest.cs

+17
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,23 @@ protected override IEasyCachingProvider CreateCachingProvider(Action<BaseProvide
3838
IServiceProvider serviceProvider = services.BuildServiceProvider();
3939
return serviceProvider.GetService<IEasyCachingProvider>();
4040
}
41+
42+
[Fact]
43+
public void GetDatabase_Should_Succeed()
44+
{
45+
var db = _provider.Database;
46+
47+
Assert.NotNull(db);
48+
Assert.IsType<EasyCachingCSRedisClient>(db);
49+
}
50+
51+
[Fact]
52+
public void GetDatabase_And_Use_Raw_Method_Should_Succeed()
53+
{
54+
var db = (EasyCachingCSRedisClient)_provider.Database;
55+
var flag = db.Ping();
56+
Assert.True(flag);
57+
}
4158
}
4259

4360
public class CSRedisCachingProviderWithNamedSerTest

test/EasyCaching.UnitTests/CachingTests/HybridCachingTest.cs

+16
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,22 @@ public async Task Distributed_Set_Async_Throw_Exception_Should_Not_Break()
221221
Assert.Equal(default(string), res.Value);
222222
}
223223

224+
[Fact]
225+
public void Iss_311_Test()
226+
{
227+
var cacheKey = $"{_namespace}_iss311_{Guid.NewGuid()}";
228+
229+
hybridCaching_1.Set(cacheKey, "val", TimeSpan.FromSeconds(30));
230+
231+
var afterSet = hybridCaching_1.Exists(cacheKey);
232+
Assert.True(afterSet);
233+
234+
hybridCaching_1.Remove(cacheKey);
235+
236+
var afterRemove = hybridCaching_1.Exists(cacheKey);
237+
Assert.False(afterRemove);
238+
}
239+
224240
private void FakeCreatProvider()
225241
{
226242
A.CallTo(() => fakeFactory.GetCachingProvider("m1")).Returns(new FakeLocalCachingProvider());

test/EasyCaching.UnitTests/CachingTests/LiteDBCachingTest.cs

+10
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.IO;
1010
using System.Threading.Tasks;
1111
using Xunit;
12+
using global::LiteDB;
1213

1314
public class LiteDBCachingTest : BaseCachingProviderTest
1415
{
@@ -45,6 +46,15 @@ protected override Task GetAsync_Parallel_Should_Succeed()
4546
protected override void Get_Parallel_Should_Succeed()
4647
{
4748
}
49+
50+
[Fact]
51+
public void GetDatabase_Should_Succeed()
52+
{
53+
var db = _provider.Database;
54+
55+
Assert.NotNull(db);
56+
Assert.IsAssignableFrom<ILiteCollection<CacheItem>>(db);
57+
}
4858
}
4959

5060

test/EasyCaching.UnitTests/CachingTests/MemcachedProviderTest.cs

+17-1
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,24 @@ private void GetCacheItem(string cacheKey, string prefix)
186186
var val = _provider.Get<string>(cacheKey);
187187
Assert.False(val.HasValue);
188188
}
189-
}
190189

190+
[Fact]
191+
public void GetDatabase_Should_Succeed()
192+
{
193+
var db = _provider.Database;
194+
195+
Assert.NotNull(db);
196+
Assert.IsType<EasyCachingMemcachedClient>(db);
197+
}
198+
199+
[Fact]
200+
public void GetDatabase_And_Use_Raw_Method_Should_Succeed()
201+
{
202+
var db = (EasyCachingMemcachedClient)_provider.Database;
203+
var stats = db.Stats();
204+
Assert.NotNull(stats);
205+
}
206+
}
191207

192208
public class MemcachedProviderWithFactoryTest : BaseCachingProviderWithFactoryTest
193209
{

test/EasyCaching.UnitTests/CachingTests/MemoryCachingProviderTest.cs

+10
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,17 @@ public void Issues150_DeepClone_Object_Test()
109109

110110
Assert.Equal("catcherwong", res2.Value.Name);
111111
}
112+
113+
[Fact]
114+
public void GetDatabase_Should_Succeed()
115+
{
116+
var db = _provider.Database;
117+
118+
Assert.NotNull(db);
119+
Assert.IsType<InMemoryCaching>(db);
120+
}
112121
}
122+
113123
public class MemoryCachingProviderWithFactoryTest : BaseCachingProviderWithFactoryTest
114124
{
115125
public MemoryCachingProviderWithFactoryTest()

0 commit comments

Comments
 (0)