网站首页 网站源码
using System.Threading;
using ZiggyCreatures.Caching.Fusion;
namespace Dpz.Core.Service;
public interface ICacheService
{
string BuildCacheKey(string method, object? parameters = null);
/// <summary>
/// 从缓存获取数据或通过工厂方法设置缓存
/// </summary>
Task<T> GetOrSetCacheAsync<T>(
string methodName,
Func<FusionCacheFactoryExecutionContext<T>, CancellationToken, Task<T>> factory,
object? parameters = null,
Action<FusionCacheEntryOptions>? setupAction = null
);
/// <summary>
/// 尝试从缓存获取数据
/// </summary>
ValueTask<MaybeValue<T>> TryGetFromCacheAsync<T>(string methodName, object? parameters = null);
/// <summary>
/// 设置缓存数据
/// </summary>
Task SetCacheAsync<T>(
string methodName,
T value,
object? parameters = null,
params string[] additionalTags
);
/// <summary>
/// 移除缓存
/// </summary>
/// <param name="methodName"></param>
/// <param name="parameters"></param>
/// <returns></returns>
Task RemoveCacheAsync(string methodName, object? parameters = null);
/// <summary>
/// 获取分页数据或通过工厂方法设置缓存
/// </summary>
/// <param name="methodName"></param>
/// <param name="factory"></param>
/// <param name="parameters"></param>
/// <param name="setupAction"></param>
/// <param name="additionalTags"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
Task<IPagedList<T>> GetOrSetPagedListAsync<T>(
string methodName,
Func<List<string>, Task<IPagedList<T>>> factory,
object? parameters = null,
Action<FusionCacheEntryOptions>? setupAction = null,
params string[] additionalTags
);
/// <summary>
/// 根据方法名称清除缓存
/// </summary>
/// <returns></returns>
ValueTask RemoveByMethodAsync(string methodName);
/// <summary>
/// 根据前缀清除缓存
/// </summary>
/// <returns></returns>
ValueTask RemoveByPrefixAsync();
}
上述代码定义了一个名为 ICacheService
的接口,主要用于处理缓存相关的操作。这个接口提供了一系列方法,允许开发者在应用程序中实现缓存机制,以提高性能和响应速度。以下是对每个方法的详细解释:
BuildCacheKey:
GetOrSetCacheAsync:
Task<T>
),表示操作的结果。TryGetFromCacheAsync:
MaybeValue<T>
,表示可能存在的值。这个方法是异步的,返回一个值任务(ValueTask<MaybeValue<T>>
),用于提高性能。SetCacheAsync:
Task
)。RemoveCacheAsync:
Task
)。GetOrSetPagedListAsync:
GetOrSetCacheAsync
类似,但专门用于处理分页数据。返回一个分页列表(IPagedList<T>
),这个方法是异步的。RemoveByMethodAsync:
ValueTask
)。RemoveByPrefixAsync:
ValueTask
)。ICacheService
接口提供了一种灵活的方式来管理缓存,包括获取、设置、移除缓存数据以及处理分页数据。通过使用这个接口,开发者可以有效地提高应用程序的性能,减少对数据库或其他数据源的频繁访问。