Skip to content

Commit

Permalink
Merge pull request dotnetcore#286 from dotnetcore/dev
Browse files Browse the repository at this point in the history
Improve Disk and Redis
  • Loading branch information
catcherwong authored Feb 12, 2021
2 parents e683755 + fbaf33d commit 152cbe7
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 8 deletions.
4 changes: 2 additions & 2 deletions build/releasenotes.props
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
1. Upgrading dependencies.
</EasyCachingMemcachedPackageNotes>
<EasyCachingRedisPackageNotes>
1. Upgrading dependencies.
1. Support SyncTimeout and AsyncTimeout (#282).
</EasyCachingRedisPackageNotes>
<EasyCachingSQLitePackageNotes>
1. Upgrading dependencies.
Expand Down Expand Up @@ -50,7 +50,7 @@
1. Upgrading dependencies.
</EasyCachingRabbitBusPackageNotes>
<EasyCachingDiskPackageNotes>
1. Upgrading dependencies.
1. fixed disk provider tryset after expired (#280).
</EasyCachingDiskPackageNotes>
<EasyCachingLiteDBPackageNotes>
1. Upgrading dependencies.
Expand Down
4 changes: 2 additions & 2 deletions build/version.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<EasyCachingCorePackageVersion>1.2.0</EasyCachingCorePackageVersion>
<EasyCachingMemcachedPackageVersion>1.2.0</EasyCachingMemcachedPackageVersion>
<EasyCachingRedisPackageVersion>1.2.0</EasyCachingRedisPackageVersion>
<EasyCachingRedisPackageVersion>1.2.1</EasyCachingRedisPackageVersion>
<EasyCachingSQLitePackageVersion>1.2.0</EasyCachingSQLitePackageVersion>
<EasyCachingInMemoryPackageVersion>1.2.0</EasyCachingInMemoryPackageVersion>
<EasyCachingHybridPackageVersion>1.2.0</EasyCachingHybridPackageVersion>
Expand All @@ -16,7 +16,7 @@
<EasyCachingRedisBusPackageVersion>1.2.0</EasyCachingRedisBusPackageVersion>
<EasyCachingCSRedisBusPackageVersion>1.2.0</EasyCachingCSRedisBusPackageVersion>
<EasyCachingRabbitBusPackageVersion>1.2.0</EasyCachingRabbitBusPackageVersion>
<EasyCachingDiskPackageVersion>1.2.0</EasyCachingDiskPackageVersion>
<EasyCachingDiskPackageVersion>1.2.1</EasyCachingDiskPackageVersion>
<EasyCachingMsExtPackageVersion>1.2.0</EasyCachingMsExtPackageVersion>
<EasyCachingLiteDBPackageVersion>1.2.0</EasyCachingLiteDBPackageVersion>
<EasyCachingSTJsonPackageVersion>1.2.0</EasyCachingSTJsonPackageVersion>
Expand Down
2 changes: 2 additions & 0 deletions sample/EasyCaching.Demo.Providers/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ public void ConfigureServices(IServiceCollection services)
option.UseRedis(config =>
{
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
config.DBConfig.SyncTimeout = 10000;
config.DBConfig.AsyncTimeout = 10000;
config.SerializerName = "mymsgpack";
}, "redis1")
.WithMessagePack("mymsgpack")//with messagepack serialization
Expand Down
2 changes: 1 addition & 1 deletion src/EasyCaching.Disk/DefaultDiskCachingProvider.Async.cs
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,7 @@ public override async Task<bool> BaseTrySetAsync<T>(string cacheKey, T cacheValu

var bytes = BuildDiskCacheValue(cacheValue, expiration);

using (FileStream stream = new FileStream(path, FileMode.CreateNew, FileAccess.Write, FileShare.None))
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))
{
await stream.WriteAsync(bytes, 0, bytes.Length);
AppendKey(cacheKey, fileName);
Expand Down
2 changes: 1 addition & 1 deletion src/EasyCaching.Disk/DefaultDiskCachingProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ public override bool BaseTrySet<T>(string cacheKey, T cacheValue, TimeSpan expir

var bytes = BuildDiskCacheValue(cacheValue, expiration);

using (FileStream stream = new FileStream(path, FileMode.CreateNew, FileAccess.Write, FileShare.None))
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))
{
stream.Write(bytes, 0, bytes.Length);
AppendKey(cacheKey, fileName);
Expand Down
14 changes: 12 additions & 2 deletions src/EasyCaching.Redis/Configurations/RedisDBOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,23 @@
/// Redis cache options.
/// </summary>
public class RedisDBOptions : BaseRedisOptions
{
{
/// <summary>
/// Gets or sets the Redis database index the cache will use.
/// </summary>
/// <value>
/// The database.
/// </value>
public int Database { get; set; } = 0;
public int Database { get; set; } = 0;

/// <summary>
/// Specifies the time in milliseconds that the system should allow for asynchronous operations (defaults to SyncTimeout)
/// </summary>
public int AsyncTimeout { get; set; }

/// <summary>
/// Specifies the time in milliseconds that the system should allow for synchronous operations (defaults to 5 seconds)
/// </summary>
public int SyncTimeout { get; set; }
}
}
42 changes: 42 additions & 0 deletions test/EasyCaching.UnitTests/CachingTests/DiskCachingProviderTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,47 @@ protected override Task GetAsync_Parallel_Should_Succeed()
{
return Task.CompletedTask;
}

[Fact]
public async Task TrySetAgainAsync_After_Expired_Should_Succed()
{
var key = Guid.NewGuid().ToString();
var v1 = "123456";
var res1 = await _provider.TrySetAsync<string>(key, v1, TimeSpan.FromSeconds(1));
Assert.True(res1);

await Task.Delay(TimeSpan.FromSeconds(2));
var res2 = await _provider.TrySetAsync<string>(key, v1, TimeSpan.FromSeconds(5));
Assert.True(res2);
}

[Fact]
public void TrySetAgain_After_Expired_Should_Succed()
{
var key = Guid.NewGuid().ToString();
var v1 = "123456";
var res1 = _provider.TrySet<string>(key, v1, TimeSpan.FromSeconds(1));
Assert.True(res1);

System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
var res2 = _provider.TrySet<string>(key, v1, TimeSpan.FromSeconds(5));
Assert.True(res2);
}

[Fact]
public void Set_Diff_Len_Value_Should_Succed()
{
var key = Guid.NewGuid().ToString();
var v1 = "1234567890";
var v2 = "12345";

_provider.Set<string>(key, v1, TimeSpan.FromSeconds(15));
var res1 = _provider.Get<string>(key);
Assert.Equal(v1, res1.Value);

_provider.Set<string>(key, v2, TimeSpan.FromSeconds(15));
var res2 = _provider.Get<string>(key);
Assert.Equal(v2, res2.Value);
}
}
}

0 comments on commit 152cbe7

Please sign in to comment.