using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WebAPI.Common { /// <summary> /// 接口 /// </summary> public interface ICache { /// <summary> /// 缓存过期时间 /// </summary> int TimeOut { set; get; } /// <summary> /// 获得指定键的缓存值 /// </summary> /// <param name="key">缓存键</param> /// <returns>缓存值</returns> object Get(string key); /// <summary> /// 获得指定键的缓存值 /// </summary> T Get<T>(string key); /// <summary> /// 从缓存中移除指定键的缓存值 /// </summary> /// <param name="key">缓存键</param> void Remove(string key); /// <summary> /// 清空所有缓存对象 /// </summary> //void Clear(); /// <summary> /// 将指定键的对象添加到缓存中 /// </summary> /// <param name="key">缓存键</param> /// <param name="data">缓存值</param> void Insert(string key, object data); /// <summary> /// 将指定键的对象添加到缓存中 /// </summary> /// <param name="key">缓存键</param> /// <param name="data">缓存值</param> void Insert<T>(string key, T data); /// <summary> /// 将指定键的对象添加到缓存中,并指定过期时间 /// </summary> /// <param name="key">缓存键</param> /// <param name="data">缓存值</param> /// <param name="cacheTime">缓存过期时间(秒钟)</param> void Insert(string key, object data, int cacheTime); /// <summary> /// 将指定键的对象添加到缓存中,并指定过期时间 /// </summary> /// <param name="key">缓存键</param> /// <param name="data">缓存值</param> /// <param name="cacheTime">缓存过期时间(秒钟)</param> void Insert<T>(string key, T data, int cacheTime); /// <summary> /// 将指定键的对象添加到缓存中,并指定过期时间 /// </summary> /// <param name="key">缓存键</param> /// <param name="data">缓存值</param> /// <param name="cacheTime">缓存过期时间</param> void Insert(string key, object data, DateTime cacheTime); /// <summary> /// 将指定键的对象添加到缓存中,并指定过期时间 /// </summary> /// <param name="key">缓存键</param> /// <param name="data">缓存值</param> /// <param name="cacheTime">缓存过期时间</param> void Insert<T>(string key, T data, DateTime cacheTime); /// <summary> /// 判断key是否存在 /// </summary> bool Exists(string key); /// <summary> /// 右侧入队 /// </summary> /// <param name="queueName"></param> /// <param name="redisValue"></param> /// <returns></returns> long EnqueueListRightPush(RedisKey queueName, RedisValue redisValue); /// <summary> /// 左侧入队 /// </summary> /// <param name="queueName"></param> /// <param name="redisvalue"></param> /// <returns></returns> long EnqueueListLeftPush(RedisKey queueName, RedisValue redisvalue); /// <summary> /// 获取队列长度 /// </summary> /// <param name="queueName"></param> /// <returns></returns> long EnqueueListLength(RedisKey queueName); /// <summary> /// 左侧出队 /// </summary> /// <param name="queueName"></param> /// <returns></returns> string DequeueListPopLeft(RedisKey queueName); /// <summary> /// 右侧出队 /// </summary> /// <param name="queueName"></param> /// <returns></returns> string DequeueListPopRight(RedisKey queueName); /// <summary> /// 分布式加锁 /// </summary> /// <param name="key">键</param> /// <param name="data">值</param> /// <param name="seconds">过期时间</param> /// <returns></returns> bool LockTake(string key, string data, TimeSpan seconds, int db = 0); /// <summary> /// 解锁 /// </summary> /// <param name="key">键</param> /// <param name="data">值</param> /// <returns></returns> bool LockRelease(string key, string data, int db = -1); } }