You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.9 KiB
154 lines
4.9 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using static CSRedis.CSRedisClient;
|
|
|
|
namespace Znyc.Dispatching.Core.Cache
|
|
{
|
|
/// <summary>
|
|
/// 缓存接口
|
|
/// </summary>
|
|
public interface IRedisCache
|
|
{
|
|
/// <summary>
|
|
/// 用于在 key 存在时删除 key
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
long Del(params string[] key);
|
|
|
|
/// <summary>
|
|
/// 用于在 key 存在时删除 key
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <returns></returns>
|
|
Task<long> DelAsync(params string[] key);
|
|
|
|
/// <summary>
|
|
/// 用于在 key 模板存在时删除
|
|
/// </summary>
|
|
/// <param name="pattern">key模板</param>
|
|
/// <returns></returns>
|
|
Task<long> DelByPatternAsync(string pattern);
|
|
|
|
/// <summary>
|
|
/// 检查给定 key 是否存在
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <returns></returns>
|
|
bool Exists(string key);
|
|
|
|
/// <summary>
|
|
/// 检查给定 key 是否存在
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <returns></returns>
|
|
Task<bool> ExistsAsync(string key);
|
|
|
|
/// <summary>
|
|
/// 获取指定 key 的值
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <returns></returns>
|
|
string Get(string key);
|
|
|
|
/// <summary>
|
|
/// 获取指定 key 的值
|
|
/// </summary>
|
|
/// <typeparam name="T">byte[] 或其他类型</typeparam>
|
|
/// <param name="key">键</param>
|
|
/// <returns></returns>
|
|
T Get<T>(string key);
|
|
|
|
/// <summary>
|
|
/// 获取指定 key 的值
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <returns></returns>
|
|
Task<string> GetAsync(string key);
|
|
|
|
/// <summary>
|
|
/// 获取指定 key 的值
|
|
/// </summary>
|
|
/// <typeparam name="T">byte[] 或其他类型</typeparam>
|
|
/// <param name="key">键</param>
|
|
/// <returns></returns>
|
|
Task<T> GetAsync<T>(string key);
|
|
|
|
/// <summary>
|
|
/// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <param name="value">值</param>
|
|
bool Set(string key, object value);
|
|
|
|
/// <summary>
|
|
/// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <param name="value">值</param>
|
|
/// <param name="expire">有效期</param>
|
|
bool Set(string key, object value, TimeSpan expire);
|
|
|
|
/// <summary>
|
|
/// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <param name="value">值</param>
|
|
/// <returns></returns>
|
|
Task<bool> SetAsync(string key, object value);
|
|
|
|
/// <summary>
|
|
/// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
|
|
/// </summary>
|
|
/// <param name="key">键</param>
|
|
/// <param name="value">值</param>
|
|
/// <param name="expire">有效期</param>
|
|
/// <returns></returns>
|
|
Task<bool> SetAsync(string key, object value, TimeSpan expire);
|
|
|
|
/// <summary>
|
|
/// 获取所有缓存
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
List<string> GetAllKeys();
|
|
|
|
|
|
/// <summary>
|
|
/// 缓存壳
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="key"></param>
|
|
/// <param name="timeoutSeconds"></param>
|
|
/// <param name="getDataAsync"></param>
|
|
/// <returns></returns>
|
|
T CacheShell<T>(string key, int timeoutSeconds, Func<T> getDataAsync);
|
|
|
|
|
|
/// <summary>
|
|
/// 缓存壳
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="key"></param>
|
|
/// <param name="timeoutSeconds"></param>
|
|
/// <param name="getDataAsync"></param>
|
|
/// <returns></returns>
|
|
Task<T> CacheShellAsync<T>(string key, int timeoutSeconds, Func<Task<T>> getDataAsync);
|
|
|
|
|
|
/// <summary>
|
|
/// 发布
|
|
/// </summary>
|
|
/// <param name="channel"></param>
|
|
/// <param name="message"></param>
|
|
/// <returns></returns>
|
|
Task<long> PublishAsync(string channel, string message);
|
|
|
|
|
|
/// <summary>
|
|
/// 订阅
|
|
/// </summary>
|
|
/// <param name="channels"></param>
|
|
/// <returns></returns>
|
|
SubscribeObject Subscribe(params (string, Action<SubscribeMessageEventArgs>)[] channels);
|
|
}
|
|
}
|