|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654 |
- 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
- }
- }
|