|
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
-
- namespace Permission.Redis
- {
- public interface IRedisService
- {
- #region String 操作
-
- /// <summary>
- /// 设置 key 并保存字符串(如果 key 已存在,则覆盖值)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- bool StringSet(string redisKey, string redisValue, TimeSpan? expiry = null);
-
- /// <summary>
- /// 保存多个 Key-value
- /// </summary>
- /// <param name="keyValuePairs"></param>
- /// <returns></returns>
- bool StringSet(IEnumerable<KeyValuePair<string, string>> keyValuePairs);
-
- /// <summary>
- /// 获取字符串
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- string StringGet(string redisKey, TimeSpan? expiry = null);
-
- /// <summary>
- /// 存储一个对象(该对象会被序列化保存)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- bool StringSet<T>(string redisKey, T redisValue, TimeSpan? expiry = null);
-
- /// <summary>
- /// 获取一个对象(会进行反序列化)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- T StringGet<T>(string redisKey, TimeSpan? expiry = null);
-
- #region String 异步操作
-
- /// <summary>
- /// 保存一个字符串值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- Task<bool> StringSetAsync(string redisKey, string redisValue, TimeSpan? expiry = null);
-
-
- /// <summary>
- /// 保存一组字符串值
- /// </summary>
- /// <param name="keyValuePairs"></param>
- /// <returns></returns>
- Task<bool> StringSetAsync(IEnumerable<KeyValuePair<string, string>> keyValuePairs);
-
- /// <summary>
- /// 获取单个值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- Task<string> StringGetAsync(string redisKey, string redisValue, TimeSpan? expiry = null);
-
- /// <summary>
- /// 存储一个对象(该对象会被序列化保存)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- Task<bool> StringSetAsync<T>(string redisKey, T redisValue, TimeSpan? expiry = null);
-
- /// <summary>
- /// 获取一个对象(会进行反序列化)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- Task<T> StringGetAsync<T>(string redisKey, TimeSpan? expiry = null);
-
- #endregion async
-
-
- #endregion
-
- #region Hash 操作
-
- /// <summary>
- /// 判断该字段是否存在 hash 中
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- bool HashExists(string redisKey, string hashField);
-
- /// <summary>
- /// 从 hash 中移除指定字段
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- bool HashDelete(string redisKey, string hashField);
-
- /// <summary>
- /// 从 hash 中移除指定字段
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashFields"></param>
- /// <returns></returns>
- long HashDelete(string redisKey, IEnumerable<string> hashFields);
-
- /// <summary>
- /// 在 hash 设定值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- bool HashSet(string redisKey, string hashField, string value);
-
- /// <summary>
- /// 在 hash 中设定值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashFields"></param>
- void HashSet(string redisKey, IEnumerable<KeyValuePair<string, string>> hashFields);
-
- /// <summary>
- /// 在 hash 中获取值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- string HashGet(string redisKey, string hashField);
-
- /// <summary>
- /// 在 hash 中获取值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashFields"></param>
- /// <returns></returns>
- IEnumerable<string> HashGet(string redisKey, IEnumerable<string> hashFields);
-
- /// <summary>
- /// 从 hash 返回所有的字段值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- IEnumerable<string> HashKeys(string redisKey);
-
- /// <summary>
- /// 返回 hash 中的所有值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- IEnumerable<string> HashValues(string redisKey);
-
- /// <summary>
- /// 在 hash 设定值(序列化)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- bool HashSet<T>(string redisKey, string hashField, T redisValue);
-
- /// <summary>
- /// 在 hash 中获取值(反序列化)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- T HashGet<T>(string redisKey, string hashField);
-
- #region Hash 异步操作
-
- /// <summary>
- /// 判断该字段是否存在 hash 中
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- Task<bool> HashExistsAsync(string redisKey, string hashField);
-
- /// <summary>
- /// 从 hash 中移除指定字段
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- Task<bool> HashDeleteAsync(string redisKey, string hashField);
-
- /// <summary>
- /// 从 hash 中移除指定字段
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashFields"></param>
- /// <returns></returns>
- Task<long> HashDeleteAsync(string redisKey, IEnumerable<string> hashFields);
-
- /// <summary>
- /// 在 hash 设定值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- Task<bool> HashSetAsync(string redisKey, string hashField, string value);
-
- /// <summary>
- /// 在 hash 中设定值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashFields"></param>
- Task HashSetAsync(string redisKey, IEnumerable<KeyValuePair<string, string>> hashFields);
-
- /// <summary>
- /// 在 hash 中获取值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- Task<string> HashGetAsync(string redisKey, string hashField);
-
- /// <summary>
- /// 在 hash 中获取值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashFields"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- Task<IEnumerable<string>> HashGetAsync(string redisKey, IEnumerable<string> hashFields,
- string value);
-
- /// <summary>
- /// 从 hash 返回所有的字段值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<IEnumerable<string>> HashKeysAsync(string redisKey);
-
- /// <summary>
- /// 返回 hash 中的所有值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<IEnumerable<string>> HashValuesAsync(string redisKey);
-
- /// <summary>
- /// 在 hash 设定值(序列化)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- Task<bool> HashSetAsync<T>(string redisKey, string hashField, T value);
-
- /// <summary>
- /// 在 hash 中获取值(反序列化)
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="hashField"></param>
- /// <returns></returns>
- Task<T> HashGetAsync<T>(string redisKey, string hashField);
-
- #endregion
-
- #endregion
-
- #region List 操作
-
- /// <summary>
- /// 移除并返回存储在该键列表的第一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- string ListLeftPop(string redisKey);
-
- /// <summary>
- /// 移除并返回存储在该键列表的最后一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- string ListRightPop(string redisKey);
-
- /// <summary>
- /// 移除列表指定键上与该值相同的元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- long ListRemove(string redisKey, string redisValue);
-
- /// <summary>
- /// 在列表尾部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- long ListRightPush(string redisKey, string redisValue);
-
- /// <summary>
- /// 在列表头部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- long ListLeftPush(string redisKey, string redisValue);
-
- /// <summary>
- /// 返回列表上该键的长度,如果不存在,返回 0
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- long ListLength(string redisKey);
-
- /// <summary>
- /// 返回在该列表上键所对应的元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="start"></param>
- /// <param name="stop"></param>
- /// <returns></returns>
- IEnumerable<string> ListRange(string redisKey, long start = 0L, long stop = -1L);
-
- /// <summary>
- /// 移除并返回存储在该键列表的第一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- T ListLeftPop<T>(string redisKey);
-
- /// <summary>
- /// 移除并返回存储在该键列表的最后一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- T ListRightPop<T>(string redisKey);
-
- /// <summary>
- /// 在列表尾部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- long ListRightPush<T>(string redisKey, T redisValue);
-
- /// <summary>
- /// 在列表头部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- long ListLeftPush<T>(string redisKey, T redisValue);
-
- #region List 异步操作
-
- /// <summary>
- /// 移除并返回存储在该键列表的第一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<string> ListLeftPopAsync(string redisKey);
-
- /// <summary>
- /// 移除并返回存储在该键列表的最后一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<string> ListRightPopAsync(string redisKey);
-
- /// <summary>
- /// 移除列表指定键上与该值相同的元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- Task<long> ListRemoveAsync(string redisKey, string redisValue);
-
- /// <summary>
- /// 在列表尾部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- Task<long> ListRightPushAsync(string redisKey, string redisValue);
-
- /// <summary>
- /// 在列表头部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- Task<long> ListLeftPushAsync(string redisKey, string redisValue);
-
- /// <summary>
- /// 返回列表上该键的长度,如果不存在,返回 0
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<long> ListLengthAsync(string redisKey);
-
- /// <summary>
- /// 返回在该列表上键所对应的元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="start"></param>
- /// <param name="stop"></param>
- /// <returns></returns>
- Task<IEnumerable<string>> ListRangeAsync(string redisKey, long start = 0L, long stop = -1L);
-
- /// <summary>
- /// 移除并返回存储在该键列表的第一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<T> ListLeftPopAsync<T>(string redisKey);
-
- /// <summary>
- /// 移除并返回存储在该键列表的最后一个元素
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<T> ListRightPopAsync<T>(string redisKey);
-
- /// <summary>
- /// 在列表尾部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- Task<long> ListRightPushAsync<T>(string redisKey, T redisValue);
-
- /// <summary>
- /// 在列表头部插入值。如果键不存在,先创建再插入值
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisValue"></param>
- /// <returns></returns>
- Task<long> ListLeftPushAsync<T>(string redisKey, T redisValue);
-
- #endregion
-
- #endregion
-
- #region SortedSet 操作
-
- /// <summary>
- /// SortedSet 新增
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="member"></param>
- /// <param name="score"></param>
- /// <returns></returns>
- bool SortedSetAdd(string redisKey, string member, double score);
-
- /// <summary>
- /// 在有序集合中返回指定范围的元素,默认情况下从低到高。
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="start"></param>
- /// <param name="stop"></param>
- /// <param name="order"></param>
- /// <returns></returns>
- IEnumerable<string> SortedSetRangeByRank(string redisKey, long start = 0L, long stop = -1L,
- OrderType order = OrderType.Ascending);
-
- /// <summary>
- /// 返回有序集合的元素个数
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- long SortedSetLength(string redisKey);
-
- /// <summary>
- /// 返回有序集合的元素个数
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="memebr"></param>
- /// <returns></returns>
- bool SortedSetLength(string redisKey, string memebr);
-
- /// <summary>
- /// SortedSet 新增
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="member"></param>
- /// <param name="score"></param>
- /// <returns></returns>
- bool SortedSetAdd<T>(string redisKey, T member, double score);
-
- /// <summary>
- /// 增量的得分排序的集合中的成员存储键值键按增量
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="member"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- double SortedSetIncrement(string redisKey, string member, double value = 1);
-
- #region SortedSet 异步操作
-
- /// <summary>
- /// SortedSet 新增
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="member"></param>
- /// <param name="score"></param>
- /// <returns></returns>
- Task<bool> SortedSetAddAsync(string redisKey, string member, double score);
-
- /// <summary>
- /// 在有序集合中返回指定范围的元素,默认情况下从低到高。
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<IEnumerable<string>> SortedSetRangeByRankAsync(string redisKey);
-
- /// <summary>
- /// 返回有序集合的元素个数
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<long> SortedSetLengthAsync(string redisKey);
-
- /// <summary>
- /// 返回有序集合的元素个数
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="memebr"></param>
- /// <returns></returns>
- Task<bool> SortedSetRemoveAsync(string redisKey, string memebr);
-
- /// <summary>
- /// SortedSet 新增
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="member"></param>
- /// <param name="score"></param>
- /// <returns></returns>
- Task<bool> SortedSetAddAsync<T>(string redisKey, T member, double score);
-
- /// <summary>
- /// 增量的得分排序的集合中的成员存储键值键按增量
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="member"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- Task<double> SortedSetIncrementAsync(string redisKey, string member, double value = 1);
-
- #endregion
-
- #endregion
-
- #region key 操作
-
- /// <summary>
- /// 移除指定 Key
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- bool KeyDelete(string redisKey);
-
- /// <summary>
- /// 移除指定 Key
- /// </summary>
- /// <param name="redisKeys"></param>
- /// <returns></returns>
- long KeyDelete(IEnumerable<string> redisKeys);
-
- /// <summary>
- /// 校验 Key 是否存在
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- bool KeyExists(string redisKey);
-
- /// <summary>
- /// 重命名 Key
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisNewKey"></param>
- /// <returns></returns>
- bool KeyRename(string redisKey, string redisNewKey);
-
- /// <summary>
- /// 设置 Key 的时间
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- bool KeyExpire(string redisKey, TimeSpan? expiry);
-
- #region key 异步操作
-
- /// <summary>
- /// 移除指定 Key
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<bool> KeyDeleteAsync(string redisKey);
-
- /// <summary>
- /// 移除指定 Key
- /// </summary>
- /// <param name="redisKeys"></param>
- /// <returns></returns>
- Task<long> KeyDeleteAsync(IEnumerable<string> redisKeys);
-
- /// <summary>
- /// 校验 Key 是否存在
- /// </summary>
- /// <param name="redisKey"></param>
- /// <returns></returns>
- Task<bool> KeyExistsAsync(string redisKey);
-
- /// <summary>
- /// 重命名 Key
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="redisNewKey"></param>
- /// <returns></returns>
- Task<bool> KeyRenameAsync(string redisKey, string redisNewKey);
-
- /// <summary>
- /// 设置 Key 的时间
- /// </summary>
- /// <param name="redisKey"></param>
- /// <param name="expiry"></param>
- /// <returns></returns>
- Task<bool> KeyExpireAsync(string redisKey, TimeSpan? expiry);
-
- #endregion
-
- #endregion
- }
- }
|