LFlow/LFlow.Cache/Cacher/SelfSingleCache.cs

56 lines
1.3 KiB
C#
Raw Normal View History

2024-10-31 17:48:11 +08:00
using LFlow.Cache.Interface;
using Microsoft.Extensions.Caching.Memory;
namespace LFlow.Cache.Cacher
{
/// <summary>
/// 自身的单实例缓存
/// </summary>
public class SelfSingleCache : ISelfCache
{
protected MemoryCache _cache = new(new MemoryCacheOptions()
{
ExpirationScanFrequency = new TimeSpan(0, 0, 10)
});
public MemoryCache CacheProvider => _cache;
public Task ClearAsync()
{
CacheProvider.Clear();
return Task.CompletedTask;
}
public Task<T?> GetAsync<T>(string key)
{
return Task.FromResult(CacheProvider.Get<T>(key));
}
public Task<object?> GetAsync(string key)
{
return Task.FromResult(CacheProvider.Get(key));
}
public Task RemoveAsync(string key)
{
2024-11-01 16:46:18 +08:00
if (CacheProvider.TryGetValue(key, out _))
CacheProvider.Remove(key);
2024-10-31 17:48:11 +08:00
return Task.CompletedTask;
}
public Task SetAsync<T>(string key, T data)
{
CacheProvider.Set(key, data);
return Task.CompletedTask;
}
public Task SetAsync<T>(string key, T data, TimeSpan expiredTime)
{
CacheProvider.Set(key, data, expiredTime);
return Task.CompletedTask;
}
}
}