using Admin.Core.Common; using StackExchange.Redis; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Admin.Core.Extensions { /// <summary> /// Redis缓存接口 /// </summary> public interface IRedisBasketRepository { /// <summary> /// 获取服务基础信息 /// </summary> RedisBaseView GetBaseInfo(); /// <summary> /// 缓存监控 /// </summary> List<RedisKeyView> GetAllKes(); /// <summary> /// 节点状态 /// </summary> /// <returns></returns> List<PointStatus> GetPointStatus(); /// <summary> /// 获取 Reids 缓存值 /// </summary> /// <param name="key"></param> /// <returns></returns> Task<string> GetValue(string key); /// <summary> /// 获取值,并序列化 /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="key"></param> /// <returns></returns> Task<TEntity> Get<TEntity>(string key); /// <summary> /// 保存 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="timeSpan">缓存过期时间,单位:分钟</param> /// <returns></returns> Task<bool> SetStr(string key, string value, int timeSpan = 0); /// <summary> /// 保存-永不过期 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="timeSpan">缓存过期时间,单位:分钟</param> /// <returns></returns> Task<bool> SetStrL(string key, string value); /// <summary> /// 保存 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="timeSpan">缓存过期时间,单位:分钟</param> /// <returns></returns> Task<bool> SetObj(string key, object value, int timeSpan = 0); /// <summary> /// 保存-永不过期 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="timeSpan">缓存过期时间,单位:分钟</param> /// <returns></returns> Task<bool> SetObjL(string key, object value); /// <summary> /// 判断是否存在 /// </summary> /// <param name="key"></param> /// <returns></returns> Task<bool> Exist(string key); /// <summary> /// 移除某一个缓存值 /// </summary> /// <param name="key"></param> /// <returns></returns> Task<bool> Remove(string key); /// <summary> /// 全部清除 /// </summary> /// <returns></returns> Task Clear(); /// <summary> /// 根据key获取RedisValue /// </summary> /// <typeparam name="T"></typeparam> /// <param name="redisKey"></param> /// <returns></returns> Task<RedisValue[]> ListRangeAsync(string redisKey); /// <summary> /// 在列表头部插入值。如果键不存在,先创建再插入值 /// </summary> /// <param name="redisKey"></param> /// <param name="redisValue"></param> /// <returns></returns> Task<long> ListLeftPushAsync(string redisKey, string redisValue, int db = -1); /// <summary> /// 在列表尾部插入值。如果键不存在,先创建再插入值 /// </summary> /// <param name="redisKey"></param> /// <param name="redisValue"></param> /// <returns></returns> Task<long> ListRightPushAsync(string redisKey, string redisValue, int db = -1); /// <summary> /// 在列表尾部插入数组集合。如果键不存在,先创建再插入值 /// </summary> /// <param name="redisKey"></param> /// <param name="redisValue"></param> /// <returns></returns> Task<long> ListRightPushAsync(string redisKey, IEnumerable<string> redisValue, int db = -1); /// <summary> /// 移除并返回存储在该键列表的第一个元素 反序列化 /// </summary> /// <param name="redisKey"></param> /// <returns></returns> Task<T> ListLeftPopAsync<T>(string redisKey, int db = -1) where T : class; /// <summary> /// 移除并返回存储在该键列表的最后一个元素 反序列化 /// 只能是对象集合 /// </summary> /// <param name="redisKey"></param> /// <returns></returns> Task<T> ListRightPopAsync<T>(string redisKey, int db = -1) where T : class; /// <summary> /// 移除并返回存储在该键列表的第一个元素 /// </summary> /// <param name="redisKey"></param> /// <param name="db"></param> /// <returns></returns> Task<string> ListLeftPopAsync(string redisKey, int db = -1); /// <summary> /// 移除并返回存储在该键列表的最后一个元素 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="redisKey"></param> /// <param name="db"></param> /// <returns></returns> Task<string> ListRightPopAsync(string redisKey, int db = -1); /// <summary> /// 列表长度 /// </summary> /// <param name="redisKey"></param> /// <param name="db"></param> /// <returns></returns> Task<long> ListLengthAsync(string redisKey, int db = -1); /// <summary> /// 返回在该列表上键所对应的元素 /// </summary> /// <param name="redisKey"></param> /// <returns></returns> Task<IEnumerable<string>> ListRangeAsync(string redisKey, int db = -1); /// <summary> /// 根据索引获取指定位置数据 /// </summary> /// <param name="redisKey"></param> /// <param name="start"></param> /// <param name="stop"></param> /// <param name="db"></param> /// <returns></returns> Task<IEnumerable<string>> ListRangeAsync(string redisKey, int start, int stop, int db = -1); /// <summary> /// 删除List中的元素 并返回删除的个数 /// </summary> /// <param name="redisKey">key</param> /// <param name="redisValue">元素</param> /// <param name="type">大于零 : 从表头开始向表尾搜索,小于零 : 从表尾开始向表头搜索,等于零:移除表中所有与 VALUE 相等的值</param> /// <param name="db"></param> /// <returns></returns> Task<long> ListDelRangeAsync(string redisKey, string redisValue, long type = 0, int db = -1); /// <summary> /// 清空List /// </summary> /// <param name="redisKey"></param> /// <param name="db"></param> Task ListClearAsync(string redisKey, int db = -1); } }