using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using StackExchange.Redis;
namespace CoreCms.Net.Caching.AutoMate.RedisCache
{
///
/// Redis缓存接口
///
public interface IRedisOperationRepository
{
///
/// 延长锁(续约)
///
///
///
///
///
bool LockExtend(string key, string value, TimeSpan cacheTime);
///
/// 延长锁(续约)
///
///
///
///
///
Task LockExtendAsync(string key, string value, TimeSpan cacheTime);
///
/// 释放锁
///
///
///
///
bool LockRelease(string key, string value);
///
/// 释放锁
///
///
///
///
Task LockReleaseAsync(string key, string value);
///
/// 获取锁
///
///
///
///
///
public bool LockTake(string key, string value, TimeSpan cacheTime);
///
/// 获取锁
///
///
///
///
///
public Task LockTakeAsync(string key, string value, TimeSpan cacheTime);
///
/// 获取值
///
///
///
Task Get(string key);
///
/// 获取一个值
///
///
///
RedisValue StringGet(string key);
///
/// 搜索获取匹配Key
///
///
///
List SearchKey(string pattern);
///
/// 获取值,并序列化
///
///
///
///
Task Get(string key);
///
/// 获取一个值
///
///
///
///
///
//保存
Task StringSetAsync(string key, string value, TimeSpan cacheTime);
///
/// 获取一个值
///
///
///
///
///
bool StringSet(string key, string value, TimeSpan cacheTime);
///
/// 获取一个值
///
///
///
///
bool StringSet(string key, string value);
///
/// 获取一个值
///
///
///
///
bool StringSet(string key, RedisValue value);
///
/// 获取一个值
///
///
///
///
///
bool StringSet(string key, RedisValue value, TimeSpan cacheTime);
///
/// 设置一个缓存
///
///
///
///
///
Task SetAsync(string key, object value, TimeSpan cacheTime);
///
/// Increment 递增
///
///
///
///
Task StringIncrement(string key, long value=1);
///
/// 判断是否存在
///
///
///
Task KeyExistsAsync(string key);
///
/// 判断是否存在
///
///
///
bool KeyExists(string key);
///
/// 获取键 过期时间
///
///
///
Task KeyTime(string key);
///
/// 删除异步
///
///
///
Task KeyDeleteAsync(string key);
///
/// 删除key
///
///
void KeyDelete(string key);
///
/// 模糊删除
///
///
void LikeRemove(string pattern);
///
/// 模糊删除异步
///
///
///
Task LikeRemoveAsync(string pattern);
///
/// 全部清除
///
///
Task Clear();
///
/// 根据key获取RedisValue
///
///
///
Task ListRangeAsync(string redisKey);
///
/// 在列表头部插入值。如果键不存在,先创建再插入值
///
///
///
///
Task ListLeftPushAsync(string redisKey, string redisValue);
///
/// 在列表尾部插入值。如果键不存在,先创建再插入值
///
///
///
///
Task ListRightPushAsync(string redisKey, string redisValue);
///
/// 在列表尾部插入数组集合。如果键不存在,先创建再插入值
///
///
///
///
Task ListRightPushAsync(string redisKey, IEnumerable redisValue);
///
/// 移除并返回存储在该键列表的第一个元素 反序列化
///
///
///
///
Task ListLeftPopAsync(string redisKey) where T : class;
///
/// 移除并返回存储在该键列表的最后一个元素 反序列化
///
///
///
///
Task ListRightPopAsync(string redisKey) where T : class;
///
/// 移除并返回存储在该键列表的第一个元素
///
///
///
Task ListLeftPopAsync(string redisKey);
///
/// 移除并返回存储在该键列表的最后一个元素
///
///
///
Task ListRightPopAsync(string redisKey);
///
/// 列表长度
///
///
///
Task ListLengthAsync(string redisKey);
///
/// 返回在该列表上键所对应的元素
///
///
///
///
Task> ListRangeAsync(string redisKey, int db = -1);
///
/// 根据索引获取指定位置数据
///
///
///
///
///
Task> ListRangeAsync(string redisKey, int start, int stop);
///
/// 删除List中的元素 并返回删除的个数
///
///
///
///
///
Task ListDelRangeAsync(string redisKey, string redisValue, long type = 0);
///
/// 清空List
///
///
///
Task ListClearAsync(string redisKey);
///
/// 有序集合/定时任务延迟队列用的多
///
/// key
/// 元素
/// 分数
Task SortedSetAddAsync(string redisKey, string redisValue, double score);
///
/// 插入zset
///
/// key
/// 消息
/// 延迟执行时间
///
Task SortedSetAddAsync(string key, string msg, DateTime time);
///
/// 返回有序集合中指定成员的索引
///
///
///
///
Task SortedSetRankAsync(string key, string value);
///
/// 返回有序集合中的分数
///
///
///
///
Task SortedSetScoreAsync(string key, string value);
///
/// 返回有序集合中的分数
///
///
///
///
double? SortedSetScore(string key, string value);
///
/// 返回有序列表里的数据
///
/// RedisKey
/// 0 是第一个
/// 最大分数值
///
Task> SortedSetRangeByRankAsync(string redisKey, int start, int stop);
///
/// 移出序列表里的指定范围数量
///
/// RedisKey
/// 0 是第一个
/// 最大分数值
///
Task SortedSetRemoveRangeByRankAsync(string redisKey, int start, int stop);
///
/// 返回有序列表里的指定范围数量
///
/// RedisKey
/// 0 是第一个
/// 最大分数值
///
Task SortedSetLengthAsync(string redisKey, long min, long max);
}
}