LFlow/LFlow.Cache/Interface/ISelfCache.cs

60 lines
2.0 KiB
C#
Raw Normal View History

2024-10-31 17:48:11 +08:00
using Microsoft.Extensions.Caching.Memory;
namespace LFlow.Cache.Interface
{
/// <summary>
/// 自身缓存接口
/// 后续扩展,可分为内部缓存和外部缓存
/// ISelfCache 只作为内部缓存接口
/// 内外部缓存的区别在于,内部缓存是程序自身的缓存,外部缓存则可共享给其他系统,并暴露在外
/// </summary>
public interface ISelfCache
{
/// <summary>
/// 缓存提供者目前只支持MemoryCache后续可扩展为使用接口然后实现不同的缓存提供者
/// </summary>
protected MemoryCache CacheProvider { get; }
/// <summary>
/// 获取
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="key">键</param>
/// <returns></returns>
Task<T?> GetAsync<T>(string key);
/// <summary>
/// 获取
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
Task<object?> GetAsync(string key);
/// <summary>
/// 存入一个值
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="key">键</param>
/// <param name="data"></param>
/// <returns></returns>
Task SetAsync<T>(string key, T data);
/// <summary>
/// 存入一个值
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="key">键</param>
/// <param name="data">数据</param>
/// <param name="expiredTime">过期时间</param>
/// <returns></returns>
Task SetAsync<T>(string key, T data, TimeSpan expiredTime);
/// <summary>
/// 移除一个键与他的值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
Task RemoveAsync(string key);
/// <summary>
/// 清空缓存
/// </summary>
/// <returns></returns>
Task ClearAsync();
}
}