Skip to content

Commit 152cbe7

Browse files
authored
Merge pull request dotnetcore#286 from dotnetcore/dev
Improve Disk and Redis
2 parents e683755 + fbaf33d commit 152cbe7

File tree

7 files changed

+62
-8
lines changed

7 files changed

+62
-8
lines changed

build/releasenotes.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
1. Upgrading dependencies.
99
</EasyCachingMemcachedPackageNotes>
1010
<EasyCachingRedisPackageNotes>
11-
1. Upgrading dependencies.
11+
1. Support SyncTimeout and AsyncTimeout (#282).
1212
</EasyCachingRedisPackageNotes>
1313
<EasyCachingSQLitePackageNotes>
1414
1. Upgrading dependencies.
@@ -50,7 +50,7 @@
5050
1. Upgrading dependencies.
5151
</EasyCachingRabbitBusPackageNotes>
5252
<EasyCachingDiskPackageNotes>
53-
1. Upgrading dependencies.
53+
1. fixed disk provider tryset after expired (#280).
5454
</EasyCachingDiskPackageNotes>
5555
<EasyCachingLiteDBPackageNotes>
5656
1. Upgrading dependencies.

build/version.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<EasyCachingCorePackageVersion>1.2.0</EasyCachingCorePackageVersion>
44
<EasyCachingMemcachedPackageVersion>1.2.0</EasyCachingMemcachedPackageVersion>
5-
<EasyCachingRedisPackageVersion>1.2.0</EasyCachingRedisPackageVersion>
5+
<EasyCachingRedisPackageVersion>1.2.1</EasyCachingRedisPackageVersion>
66
<EasyCachingSQLitePackageVersion>1.2.0</EasyCachingSQLitePackageVersion>
77
<EasyCachingInMemoryPackageVersion>1.2.0</EasyCachingInMemoryPackageVersion>
88
<EasyCachingHybridPackageVersion>1.2.0</EasyCachingHybridPackageVersion>
@@ -16,7 +16,7 @@
1616
<EasyCachingRedisBusPackageVersion>1.2.0</EasyCachingRedisBusPackageVersion>
1717
<EasyCachingCSRedisBusPackageVersion>1.2.0</EasyCachingCSRedisBusPackageVersion>
1818
<EasyCachingRabbitBusPackageVersion>1.2.0</EasyCachingRabbitBusPackageVersion>
19-
<EasyCachingDiskPackageVersion>1.2.0</EasyCachingDiskPackageVersion>
19+
<EasyCachingDiskPackageVersion>1.2.1</EasyCachingDiskPackageVersion>
2020
<EasyCachingMsExtPackageVersion>1.2.0</EasyCachingMsExtPackageVersion>
2121
<EasyCachingLiteDBPackageVersion>1.2.0</EasyCachingLiteDBPackageVersion>
2222
<EasyCachingSTJsonPackageVersion>1.2.0</EasyCachingSTJsonPackageVersion>

sample/EasyCaching.Demo.Providers/Startup.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public void ConfigureServices(IServiceCollection services)
3535
option.UseRedis(config =>
3636
{
3737
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
38+
config.DBConfig.SyncTimeout = 10000;
39+
config.DBConfig.AsyncTimeout = 10000;
3840
config.SerializerName = "mymsgpack";
3941
}, "redis1")
4042
.WithMessagePack("mymsgpack")//with messagepack serialization

src/EasyCaching.Disk/DefaultDiskCachingProvider.Async.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ public override async Task<bool> BaseTrySetAsync<T>(string cacheKey, T cacheValu
428428

429429
var bytes = BuildDiskCacheValue(cacheValue, expiration);
430430

431-
using (FileStream stream = new FileStream(path, FileMode.CreateNew, FileAccess.Write, FileShare.None))
431+
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))
432432
{
433433
await stream.WriteAsync(bytes, 0, bytes.Length);
434434
AppendKey(cacheKey, fileName);

src/EasyCaching.Disk/DefaultDiskCachingProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ public override bool BaseTrySet<T>(string cacheKey, T cacheValue, TimeSpan expir
525525

526526
var bytes = BuildDiskCacheValue(cacheValue, expiration);
527527

528-
using (FileStream stream = new FileStream(path, FileMode.CreateNew, FileAccess.Write, FileShare.None))
528+
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))
529529
{
530530
stream.Write(bytes, 0, bytes.Length);
531531
AppendKey(cacheKey, fileName);

src/EasyCaching.Redis/Configurations/RedisDBOptions.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,23 @@
66
/// Redis cache options.
77
/// </summary>
88
public class RedisDBOptions : BaseRedisOptions
9-
{
9+
{
1010
/// <summary>
1111
/// Gets or sets the Redis database index the cache will use.
1212
/// </summary>
1313
/// <value>
1414
/// The database.
1515
/// </value>
16-
public int Database { get; set; } = 0;
16+
public int Database { get; set; } = 0;
17+
18+
/// <summary>
19+
/// Specifies the time in milliseconds that the system should allow for asynchronous operations (defaults to SyncTimeout)
20+
/// </summary>
21+
public int AsyncTimeout { get; set; }
22+
23+
/// <summary>
24+
/// Specifies the time in milliseconds that the system should allow for synchronous operations (defaults to 5 seconds)
25+
/// </summary>
26+
public int SyncTimeout { get; set; }
1727
}
1828
}

test/EasyCaching.UnitTests/CachingTests/DiskCachingProviderTest.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,47 @@ protected override Task GetAsync_Parallel_Should_Succeed()
4040
{
4141
return Task.CompletedTask;
4242
}
43+
44+
[Fact]
45+
public async Task TrySetAgainAsync_After_Expired_Should_Succed()
46+
{
47+
var key = Guid.NewGuid().ToString();
48+
var v1 = "123456";
49+
var res1 = await _provider.TrySetAsync<string>(key, v1, TimeSpan.FromSeconds(1));
50+
Assert.True(res1);
51+
52+
await Task.Delay(TimeSpan.FromSeconds(2));
53+
var res2 = await _provider.TrySetAsync<string>(key, v1, TimeSpan.FromSeconds(5));
54+
Assert.True(res2);
55+
}
56+
57+
[Fact]
58+
public void TrySetAgain_After_Expired_Should_Succed()
59+
{
60+
var key = Guid.NewGuid().ToString();
61+
var v1 = "123456";
62+
var res1 = _provider.TrySet<string>(key, v1, TimeSpan.FromSeconds(1));
63+
Assert.True(res1);
64+
65+
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
66+
var res2 = _provider.TrySet<string>(key, v1, TimeSpan.FromSeconds(5));
67+
Assert.True(res2);
68+
}
69+
70+
[Fact]
71+
public void Set_Diff_Len_Value_Should_Succed()
72+
{
73+
var key = Guid.NewGuid().ToString();
74+
var v1 = "1234567890";
75+
var v2 = "12345";
76+
77+
_provider.Set<string>(key, v1, TimeSpan.FromSeconds(15));
78+
var res1 = _provider.Get<string>(key);
79+
Assert.Equal(v1, res1.Value);
80+
81+
_provider.Set<string>(key, v2, TimeSpan.FromSeconds(15));
82+
var res2 = _provider.Get<string>(key);
83+
Assert.Equal(v2, res2.Value);
84+
}
4385
}
4486
}

0 commit comments

Comments
 (0)