using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Syc.Abp.Caching.Redis
{
public interface IRedisCacheProvide: ICacheProvide
{
#region String
#region 同步方法
///
/// 保存单个key value
///
/// Redis Key
/// 保存的值
/// 过期时间
///
bool StringSet(string key, string value, TimeSpan? expiry = default(TimeSpan?));
///
/// 保存多个key value
///
/// 键值对
///
bool StringSet(List> keyValues);
///
/// 保存一个对象
///
///
///
///
///
///
bool StringSet(string key, T obj, TimeSpan? expiry = default(TimeSpan?));
///
/// 获取单个key的值
///
/// Redis Key
///
string StringGet(string key);
///
/// 获取多个Key
///
/// Redis Key集合
///
RedisValue[] StringGet(List listKey);
///
/// 获取一个key的对象
///
///
///
///
T StringGet(string key);
///
/// 为数字增长val
///
///
/// 可以为负
/// 增长后的值
double StringIncrement(string key, double val = 1);
///
/// 为数字减少val
///
///
/// 可以为负
/// 减少后的值
double StringDecrement(string key, double val = 1);
#endregion 同步方法
#region 异步方法
///
/// 保存单个key value
///
/// Redis Key
/// 保存的值
/// 过期时间
///
Task StringSetAsync(string key, string value, TimeSpan? expiry = default(TimeSpan?));
///
/// 保存多个key value
///
/// 键值对
///
Task StringSetAsync(List> keyValues);
///
/// 保存一个对象
///
///
///
///
///
///
Task StringSetAsync(string key, T obj, TimeSpan? expiry = default(TimeSpan?));
///
/// 获取单个key的值
///
/// Redis Key
///
Task StringGetAsync(string key);
///
/// 获取多个Key
///
/// Redis Key集合
///
Task StringGetAsync(List listKey);
///
/// 获取一个key的对象
///
///
///
///
Task StringGetAsync(string key);
///
/// 为数字增长val
///
///
/// 可以为负
/// 增长后的值
Task StringIncrementAsync(string key, double val = 1);
///
/// 为数字减少val
///
///
/// 可以为负
/// 减少后的值
Task StringDecrementAsync(string key, double val = 1);
#endregion 异步方法
#endregion String
#region Hash
#region 同步方法
///
/// 判断某个数据是否已经被缓存
///
///
///
///
bool HashExists(string key, string dataKey);
///
/// 存储数据到hash表
///
///
///
///
///
///
bool HashSet(string key, string dataKey, T t);
///
/// 移除hash中的某值
///
///
///
///
bool HashDelete(string key, string dataKey);
///
/// 移除hash中的多个值
///
///
///
///
long HashDelete(string key, List dataKeys);
///
/// 从hash表获取数据
///
///
///
///
///
T HashGet(string key, string dataKey);
///
/// 为数字增长val
///
///
///
/// 可以为负
/// 增长后的值
double HashIncrement(string key, string dataKey, double val = 1);
///
/// 为数字减少val
///
///
///
/// 可以为负
/// 减少后的值
double HashDecrement(string key, string dataKey, double val = 1);
///
/// 获取hashkey所有Redis key
///
///
///
///
List HashKeys(string key);
#endregion 同步方法
#region 异步方法
///
/// 判断某个数据是否已经被缓存
///
///
///
///
Task HashExistsAsync(string key, string dataKey);
///
/// 存储数据到hash表
///
///
///
///
///
///
Task HashSetAsync(string key, string dataKey, T t);
///
/// 移除hash中的某值
///
///
///
///
Task HashDeleteAsync(string key, string dataKey);
///
/// 移除hash中的多个值
///
///
///
///
Task HashDeleteAsync(string key, List dataKeys);
///
/// 从hash表获取数据
///
///
///
///
///
Task HashGeAsync(string key, string dataKey);
///
/// 为数字增长val
///
///
///
/// 可以为负
/// 增长后的值
Task HashIncrementAsync(string key, string dataKey, double val = 1);
///
/// 为数字减少val
///
///
///
/// 可以为负
/// 减少后的值
Task HashDecrementAsync(string key, string dataKey, double val = 1);
///
/// 获取hashkey所有Redis key
///
///
///
///
Task> HashKeysAsync(string key);
#endregion 异步方法
#endregion Hash
#region List
#region 同步方法
///
/// 移除指定ListId的内部List的值
///
///
///
void ListRemove(string key, T value);
///
/// 获取指定key的List
///
///
///
List ListRange(string key);
///
/// 入队
///
///
///
void ListRightPush(string key, T value);
///
/// 出队
///
///
///
///
T ListRightPop(string key);
///
/// 入栈
///
///
///
///
void ListLeftPush(string key, T value);
///
/// 出栈
///
///
///
///
T ListLeftPop(string key);
///
/// 获取集合中的数量
///
///
///
long ListLength(string key);
#endregion 同步方法
#region 异步方法
///
/// 移除指定ListId的内部List的值
///
///
///
Task ListRemoveAsync(string key, T value);
///
/// 获取指定key的List
///
///
///
Task> ListRangeAsync(string key);
///
/// 入队
///
///
///
Task ListRightPushAsync(string key, T value);
///
/// 出队
///
///
///
///
Task ListRightPopAsync(string key);
///
/// 入栈
///
///
///
///
Task ListLeftPushAsync(string key, T value);
///
/// 出栈
///
///
///
///
Task ListLeftPopAsync(string key);
///
/// 获取集合中的数量
///
///
///
Task ListLengthAsync(string key);
#endregion 异步方法
#endregion List
#region SortedSet 有序集合
#region 同步方法
///
/// 添加
///
///
///
///
bool SortedSetAdd(string key, T value, double score);
///
/// 删除
///
///
///
bool SortedSetRemove(string key, T value);
///
/// 获取全部
///
///
///
List SortedSetRangeByRank(string key);
///
/// 获取集合中的数量
///
///
///
long SortedSetLength(string key);
#endregion 同步方法
#region 异步方法
///
/// 添加
///
///
///
///
Task SortedSetAddAsync(string key, T value, double score);
///
/// 删除
///
///
///
Task SortedSetRemoveAsync(string key, T value);
///
/// 获取全部
///
///
///
Task> SortedSetRangeByRankAsync(string key);
///
/// 获取集合中的数量
///
///
///
Task SortedSetLengthAsync(string key);
#endregion 异步方法
#endregion SortedSet 有序集合
#region key
///
/// 删除单个key
///
/// redis key
/// 是否删除成功
bool KeyDelete(string key);
///
/// 删除多个key
///
/// rediskey
/// 成功删除的个数
long KeyDelete(List keys);
///
/// 判断key是否存储
///
/// redis key
///
bool KeyExists(string key);
///
/// 重新命名key
///
/// 就的redis key
/// 新的redis key
///
bool KeyRename(string key, string newKey);
///
/// 设置Key的时间
///
/// redis key
///
///
bool KeyExpire(string key, TimeSpan? expiry = default(TimeSpan?));
#endregion key
#region 发布订阅
///
/// Redis发布订阅 订阅
///
///
///
void Subscribe(string subChannel, Action handler = null);
///
/// Redis发布订阅 发布
///
///
///
///
///
long Publish(string channel, T msg);
///
/// Redis发布订阅 取消订阅
///
///
void Unsubscribe(string channel);
///
/// Redis发布订阅 取消全部订阅
///
void UnsubscribeAll();
#endregion 发布订阅
}
}