Browse Source

Allow to pass DistributedCacheEntryOptions on IDistributedCache.GetOrAdd

pull/625/head
Halil ibrahim Kalkan 7 years ago
parent
commit
1751ecfa00
  1. 16
      framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs
  2. 4
      framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs

16
framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs

@ -63,7 +63,10 @@ namespace Volo.Abp.Caching
return ObjectSerializer.Deserialize<TCacheItem>(cachedBytes);
}
public TCacheItem GetOrAdd(string key, Func<TCacheItem> factory)
public TCacheItem GetOrAdd(
string key,
Func<TCacheItem> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null)
{
var value = Get(key);
if (value != null)
@ -80,14 +83,17 @@ namespace Volo.Abp.Caching
}
value = factory();
Set(key, value);
Set(key, value, optionsFactory?.Invoke());
}
return value;
}
public async Task<TCacheItem> GetOrAddAsync(string key, Func<Task<TCacheItem>> factory, CancellationToken token = default)
public async Task<TCacheItem> GetOrAddAsync(
string key,
Func<Task<TCacheItem>> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null,
CancellationToken token = default)
{
var value = await GetAsync(key, token);
if (value != null)
@ -104,7 +110,7 @@ namespace Volo.Abp.Caching
}
value = await factory();
await SetAsync(key, value, token: token);
await SetAsync(key, value, optionsFactory?.Invoke(), token);
}
return value;

4
framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs

@ -20,12 +20,14 @@ namespace Volo.Abp.Caching
TCacheItem GetOrAdd(
string key,
Func<TCacheItem> factory
Func<TCacheItem> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null
);
Task<TCacheItem> GetOrAddAsync(
[NotNull] string key,
Func<Task<TCacheItem>> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null,
CancellationToken token = default
);

Loading…
Cancel
Save