60 lines
2.0 KiB
C#
60 lines
2.0 KiB
C#
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();
|
||
}
|
||
}
|