using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_Core.Caches { public interface ICacheService : IDisposable { /// /// 验证缓存项是否存在 /// /// 缓存Key /// bool Exists(string key); /// /// 添加缓存 /// /// 缓存Key /// 缓存Value /// 缓存时长 /// 是否滑动过期(如果在过期时间内有操作,则以当前时间点延长过期时间) //new TimeSpan(0, 60, 0); /// bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false); bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false); void AddOrUpdate(string key, string value, int expireSeconds = -1, bool isSliding = false); void AddOrUpdate(string key, object value, int expireSeconds = -1, bool isSliding = false); /// /// 删除缓存 /// /// 缓存Key /// bool Remove(string key); /// /// 批量删除缓存 /// /// 缓存Key集合 /// void Remove(IEnumerable keys); /// /// 获取缓存 /// /// 缓存Key /// T? Get(string key) where T : class; object? Get(Type type, string key); /// /// 获取缓存 /// /// 缓存Key /// string? Get(string key); #region ConcurrentDictionary风格方法 /// /// 尝试添加,仅当Key不存在时添加成功 /// bool TryAdd(string key, string value, int expireSeconds = -1); /// /// 尝试添加对象,仅当Key不存在时添加成功 /// bool TryAdd(string key, T value, int expireSeconds = -1) where T : class; /// /// 尝试获取值,返回是否存在 /// bool TryGetValue(string key, out string? value); /// /// 尝试获取对象,返回是否存在 /// bool TryGetValue(string key, out T? value) where T : class; /// /// 尝试移除并返回被移除的值 /// bool TryRemove(string key, out string? value); /// /// 尝试更新,仅当Key存在时更新 /// bool TryUpdate(string key, string newValue, int expireSeconds = -1); /// /// 获取或添加:Key存在则返回现有值,不存在则添加并返回新值 /// string GetOrAdd(string key, string value, int expireSeconds = -1); /// /// 获取或添加(工厂方法):Key存在则返回现有值,不存在则通过工厂方法生成值并添加 /// string GetOrAdd(string key, Func valueFactory, int expireSeconds = -1); /// /// 获取或添加对象 /// T GetOrAdd(string key, Func valueFactory, int expireSeconds = -1) where T : class; #endregion } }