using JNPF.Common.Cache; using JNPF.DependencyInjection; using Microsoft.Extensions.Options; namespace JNPF.Common.Manager; /// /// 缓存管理. /// public class CacheManager : ICacheManager, IScoped { /// /// 缓存配置. /// private readonly CacheOptions _cacheOptions; /// /// 缓存接口基类. /// private readonly ICache _cache; /// /// 初始化一个类型的新实例. /// public CacheManager( IOptions cacheOptions, Func resolveNamed) { _cacheOptions = cacheOptions.Value; _cache = resolveNamed(_cacheOptions.CacheType.ToString(), default) as ICache; } /// /// 获取所有缓存关键字. /// /// public List GetAllCacheKeys() { List cacheItems = _cache.GetAllKeys(); if (cacheItems == null) return new List(); return cacheItems.Where(u => !u.ToString().StartsWith("mini-profiler")).Select(u => u).ToList(); } /// /// 删除指定关键字缓存. /// /// 键. /// public bool Del(string key) { _cache.Del(key); return true; } /// /// 删除指定关键字缓存. /// /// 键. /// public Task DelAsync(string key) { _cache.DelAsync(key); return Task.FromResult(true); } /// /// 删除指定关键字数组缓存. /// /// 键. /// public Task DelAsync(string[] key) { _cache.DelAsync(key); return Task.FromResult(true); } /// /// 删除某特征关键字缓存. /// /// 键. /// public Task DelByPatternAsync(string key) { _cache.DelByPatternAsync(key); return Task.FromResult(true); } /// /// 设置缓存. /// /// 键. /// 值. /// public bool Set(string key, object value) { return _cache.Set(key, value); } /// /// 设置缓存. /// /// 键. /// 值. /// 过期时间. /// public bool Set(string key, object value, TimeSpan timeSpan) { return _cache.Set(key, value, timeSpan); } /// /// 设置缓存. /// /// 键. /// 值. /// public async Task SetAsync(string key, object value) { return await _cache.SetAsync(key, value); } /// /// 设置缓存. /// /// 键. /// 值. /// 过期时间. /// public async Task SetAsync(string key, object value, TimeSpan timeSpan) { return await _cache.SetAsync(key, value, timeSpan); } /// /// 获取指定 key 的增量值. /// /// 键. /// 增量. /// public long Incrby(string key, long incrBy) { return _cache.Incrby(key, incrBy); } /// /// 获取指定 key 的增量值. /// /// 键. /// 增量. /// public async Task IncrbyAsync(string key, long incrBy) { return await _cache.IncrbyAsync(key, incrBy); } /// /// 获取缓存. /// /// 键. /// public string Get(string key) { return _cache.Get(key); } /// /// 获取缓存. /// /// 键. /// public async Task GetAsync(string key) { return await _cache.GetAsync(key); } /// /// 获取缓存. /// /// 对象. /// 键. /// public T Get(string key) { return _cache.Get(key); } /// /// 获取缓存. /// /// 对象. /// 键. /// public Task GetAsync(string key) { return _cache.GetAsync(key); } /// /// 获取缓存过期时间. /// /// 键. /// public DateTime GetCacheOutTime(string key) { return _cache.GetCacheOutTime(key); } /// /// 检查给定 key 是否存在. /// /// 键. /// public bool Exists(string key) { return _cache.Exists(key); } /// /// 检查给定 key 是否存在. /// /// 键. /// public Task ExistsAsync(string key) { return _cache.ExistsAsync(key); } /// /// 只有在 key 不存在时设置 key 的值. /// /// 键. /// 值. /// 有效期. public bool SetNx(string key, object value, TimeSpan expire) { return _cache.SetNx(key, value, expire); } /// /// 只有在 key 不存在时设置 key 的值. /// /// 键. /// 值. public bool SetNx(string key, object value) { return _cache.SetNx(key, value); } }