using LFlow.Cache.Interface; using Microsoft.Extensions.Caching.Memory; namespace LFlow.Cache.Cacher { /// /// 自身的单实例缓存 /// 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 GetAsync(string key) { return Task.FromResult(CacheProvider.Get(key)); } public Task GetAsync(string key) { return Task.FromResult(CacheProvider.Get(key)); } public Task RemoveAsync(string key) { if (CacheProvider.TryGetValue(key, out _)) CacheProvider.Remove(key); return Task.CompletedTask; } public Task SetAsync(string key, T data) { CacheProvider.Set(key, data); return Task.CompletedTask; } public Task SetAsync(string key, T data, TimeSpan expiredTime) { CacheProvider.Set(key, data, expiredTime); return Task.CompletedTask; } } }