网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
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();
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

上述代码定义了一个名为 ICacheService 的接口,主要用于处理缓存相关的操作。这个接口提供了一系列方法,允许开发者在应用程序中实现缓存机制,以提高性能和响应速度。以下是对每个方法的详细解释:

  1. BuildCacheKey:

    • 功能:构建缓存键。根据方法名称和可选的参数生成一个唯一的缓存键,以便在缓存中存储和检索数据。
  2. GetOrSetCacheAsync:

    • 功能:从缓存中获取数据,如果缓存中没有,则通过提供的工厂方法生成数据并将其存储到缓存中。这个方法是异步的,返回一个任务(Task<T>),表示操作的结果。
  3. TryGetFromCacheAsync:

    • 功能:尝试从缓存中获取数据。如果成功获取到数据,则返回一个 MaybeValue<T>,表示可能存在的值。这个方法是异步的,返回一个值任务(ValueTask<MaybeValue<T>>),用于提高性能。
  4. SetCacheAsync:

    • 功能:将数据设置到缓存中。可以指定方法名称、要缓存的值、可选的参数和附加标签。这个方法是异步的,返回一个任务(Task)。
  5. RemoveCacheAsync:

    • 功能:根据方法名称和可选参数移除缓存中的数据。这个方法是异步的,返回一个任务(Task)。
  6. GetOrSetPagedListAsync:

    • 功能:获取分页数据或通过工厂方法设置缓存。与 GetOrSetCacheAsync 类似,但专门用于处理分页数据。返回一个分页列表(IPagedList<T>),这个方法是异步的。
  7. RemoveByMethodAsync:

    • 功能:根据方法名称清除缓存。这个方法是异步的,返回一个值任务(ValueTask)。
  8. RemoveByPrefixAsync:

    • 功能:根据前缀清除缓存。这个方法是异步的,返回一个值任务(ValueTask)。

总结

ICacheService 接口提供了一种灵活的方式来管理缓存,包括获取、设置、移除缓存数据以及处理分页数据。通过使用这个接口,开发者可以有效地提高应用程序的性能,减少对数据库或其他数据源的频繁访问。

loading