Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions Enyim.Caching.Tests/MemcachedClientGetTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,17 @@ public void When_Getting_SByte_Result_Is_Successful()
}

[Fact]
public async Task When_GetValueOrCreateAsync_Is_Successful()
public async Task GetValueOrCreateAsyncTest()
{
var key = GetUniqueKey("Get");
var expected = "hello word";
var value = await _client.GetValueOrCreateAsync(key, 10, Task.FromResult(expected));
Assert.Equal(expected, value);
Assert.Equal(expected, await _client.GetValueAsync<string>(key));

key = GetUniqueKey("Get");
await _client.GetValueOrCreateAsync(key, 10, Task.FromResult<string>(null));
Assert.False((await _client.GetAsync<string>(key)).Success);
var key = "GetValueOrCreateAsyncTest_" + Guid.NewGuid();
await _client.GetValueOrCreateAsync(key, 10, () => GenerateValue());
var cacheValue = await _client.GetValueAsync<string>(key);
Assert.Equal(nameof(GetValueOrCreateAsyncTest), cacheValue);
}

private Task<string> GenerateValue()
{
return Task.FromResult(nameof(GetValueOrCreateAsyncTest));
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Enyim.Caching/Enyim.Caching.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<Description>EnyimMemcachedCore is a Memcached client library for .NET Core. Usage: Add services.AddEnyimMemcached(...) and app.UseEnyimMemcached() in Startup. Add IMemcachedClient into constructor.</Description>
<VersionPrefix>2.1.2</VersionPrefix>
<VersionPrefix>2.1.3</VersionPrefix>
<Authors>cnblogs.com</Authors>
<TargetFramework>netstandard2.0</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
Expand Down
2 changes: 1 addition & 1 deletion Enyim.Caching/IMemcachedClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public interface IMemcachedClient : IDisposable

Task<IGetOperationResult<T>> GetAsync<T>(string key);
Task<T> GetValueAsync<T>(string key);
Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Task<T> generator);
Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Func<Task<T>> generator);
object Get(string key);
T Get<T>(string key);
IDictionary<string, T> Get<T>(IEnumerable<string> keys);
Expand Down
4 changes: 2 additions & 2 deletions Enyim.Caching/MemcachedClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -219,15 +219,15 @@ public async Task<T> GetValueAsync<T>(string key)
return result.Success ? result.Value : default(T);
}

public async Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Task<T> generator)
public async Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Func<Task<T>> generator)
{
var result = await GetAsync<T>(key);
if (result.Success)
{
return result.Value;
}

var value = await generator;
var value = await generator?.Invoke();
if (value != null)
{
await AddAsync(key, value, cacheSeconds);
Expand Down
4 changes: 2 additions & 2 deletions Enyim.Caching/NullMemcachedClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,9 @@ public Task SetAsync(string key, object value, int cacheSeconds)
return Task.CompletedTask;
}

public Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Task<T> generator)
public Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Func<Task<T>> generator)
{
return generator;
return generator?.Invoke();
}

public Task FlushAllAsync()
Expand Down