/// <summary> /// 获取要操作的库 /// </summary> /// <param name="db">库,0和-1都是第一个库,1是第二个库...</param> /// <returns></returns> private static int GetOperationDB(RedisEnum db) { if (db == RedisEnum.Default) { return(_strDb); } else { return((int)db); } }
/// <summary> /// 出栈 /// </summary> public static string GetStack(string key, RedisEnum redisEnum = RedisEnum.Main) { try { using (IRedisClient iRedisClient = redisEnum == RedisEnum.Main ? MainRedisClientManager.GetClient() : CommonRedisClientManager.GetClient()) { iRedisClient.Password = redisEnum == RedisEnum.Main ? MainMasterPwd : CommonMasterPwd; return(iRedisClient.PopItemFromList(key)); } } catch (Exception ex) { FileHelper.logger.Warn("Redis出栈时异常 || " + ex.Message); } return(string.Empty); }
/// <summary> /// 删除缓存 /// </summary> public static bool DeleteCache(string key, RedisEnum redisEnum = RedisEnum.Main) { try { using (IRedisClient iRedisClient = redisEnum == RedisEnum.Main ? MainRedisClientManager.GetClient() : CommonRedisClientManager.GetClient()) { iRedisClient.Password = redisEnum == RedisEnum.Main ? MainMasterPwd : CommonMasterPwd; return(iRedisClient.Remove(key)); } } catch (Exception ex) { FileHelper.logger.Warn("Redis删除缓存时异常 || " + ex.Message); } return(false); }
/// <summary> /// 获取缓存 /// </summary> public static T GetCache <T>(string key, RedisEnum redisEnum = RedisEnum.Main) { try { using (IRedisClient iRedisClient = redisEnum == RedisEnum.Main ? MainRedisClientManager.GetReadOnlyClient() : CommonRedisClientManager.GetReadOnlyClient()) { iRedisClient.Password = redisEnum == RedisEnum.Main ? MainSlavePwd : CommonSlavePwd; return(iRedisClient.Get <T>(key)); } } catch (Exception ex) { FileHelper.logger.Warn("Redis获取缓存时异常 || " + ex.Message); } return(default(T)); }
/// <summary> /// 清空缓存 /// </summary> public static bool DeleteAllCache(RedisEnum redisEnum = RedisEnum.Main) { try { using (IRedisClient iRedisClient = redisEnum == RedisEnum.Main ? MainRedisClientManager.GetClient() : CommonRedisClientManager.GetClient()) { iRedisClient.Password = redisEnum == RedisEnum.Main ? MainMasterPwd : CommonMasterPwd; iRedisClient.FlushAll(); return(true); } } catch (Exception ex) { FileHelper.logger.Warn("Redis清空缓存时异常 || " + ex.Message); } return(false); }
/// <summary> /// 压栈 /// </summary> public static bool SetStack(string key, string val, RedisEnum redisEnum = RedisEnum.Main) { try { using (IRedisClient iRedisClient = redisEnum == RedisEnum.Main ? MainRedisClientManager.GetClient() : CommonRedisClientManager.GetClient()) { iRedisClient.Password = redisEnum == RedisEnum.Main ? MainMasterPwd : CommonMasterPwd; iRedisClient.PushItemToList(key, val); return(true); } } catch (Exception ex) { FileHelper.logger.Warn("Redis压栈时异常 || " + ex.Message); } return(false); }
/// <summary> /// 出栈(删除最前面的一个元素并返回) /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static T ListLeftPop <T>(string key, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); var vRedisValues = Manager.GetDatabase(GetOperationDB(db)).ListLeftPop(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key); return(ConvertObj <T>(vRedisValues)); }
/// <summary> /// 清空 /// </summary> /// <param name="key">键</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static IEnumerable <RedisKey> AllClear(string key, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { return(Manager.GetServer(_strConn, _strPwd).Keys(GetOperationDB(db), key)); }
/// <summary> /// 删除 /// </summary> /// <param name="key">键</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static bool KeyDelete(string key, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { try { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).KeyDelete(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key)); } catch (Exception) { return(false); } }
/// <summary> /// 批量删除 /// </summary> /// <param name="keys">键</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static long KeyDelete(List <string> keys, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { try { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).KeyDelete(ConvertRedisKeys(keys, strFd))); } catch (Exception) { return(0); } }
/// <summary> /// 获取个数 /// </summary> /// <param name="key">键</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static long ListLength(string key, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).ListLength(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key)); }
/// <summary> /// 设置缓存 /// </summary> public static bool SetCache(string key, object val, DateTime?dateTime = null, RedisEnum redisEnum = RedisEnum.Main) { try { using (IRedisClient iRedisClient = redisEnum == RedisEnum.Main ? MainRedisClientManager.GetClient() : CommonRedisClientManager.GetClient()) { iRedisClient.Password = redisEnum == RedisEnum.Main ? MainMasterPwd : CommonMasterPwd; if (dateTime != null) { return(iRedisClient.Set(key, val, (DateTime)dateTime)); } else { return(iRedisClient.Set(key, val)); } } } catch (Exception ex) { FileHelper.logger.Warn("Redis设置缓存时异常 || " + ex.Message); } return(false); }
/// <summary> /// 批量入队(后插入的在List后面) /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name="values">值</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static long ListRightPush <T>(string key, List <T> values, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); var vRedisValues = values.Select(m => (RedisValue)ConvertJson(m)).ToArray(); return(Manager.GetDatabase(GetOperationDB(db)).ListRightPush(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key, vRedisValues)); }
/// <summary> /// 获取 /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name="start">索引开始</param> /// <param name="stop">索引结束</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static List <T> ListRange <T>(string key, long start = 0, long stop = -1, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); var vRedisValues = Manager.GetDatabase(GetOperationDB(db)).ListRange(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key, start, stop); return(ConvetList <T>(vRedisValues)); }
/// <summary> /// 设置过期时间 /// </summary> /// <param name="key">键</param> /// <param name="min">过期时间,单位:分钟</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> public static bool KeyExpire(string key, int min = 600, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { try { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).KeyExpire(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key, DateTime.Now.AddMinutes(min))); } catch (Exception) { return(false); } }
/// <summary> /// 入队(后插入的在List后面) /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name="value">值</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> public static long ListRightPush <T>(string key, T value, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).ListRightPush(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key, ConvertJson(value))); }
/// <summary> /// 根据key获取单个对象 /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static T StringGet <T>(string key, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); string vValue = Manager.GetDatabase(GetOperationDB(db)).StringGet(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key); return(ConvertObj <T>(vValue)); }
/// <summary> /// 批量根据key获取 /// </summary> /// <param name="keys">键</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static RedisValue[] StringGet(List <string> keys, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).StringGet(ConvertRedisKeys(keys, strFd))); }
/// <summary> /// 缓存对象 /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name="obj">值</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static bool StringSet <T>(string key, T obj, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).StringSet(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key, JsonHelper.SerializeObject(obj))); }
/// <summary> /// 批量缓存字符串 /// </summary> /// <param name="keysStr">键</param> /// <param name="valuesStr">值</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static bool StringSet(string[] keysStr, string[] valuesStr, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); var vCount = keysStr.Length; var vKeyValuePair = new KeyValuePair <RedisKey, RedisValue> [vCount]; for (int i = 0; i < vCount; i++) { vKeyValuePair[i] = new KeyValuePair <RedisKey, RedisValue>(StringExtension.IsBlank(strFd) ? keysStr[i] : strFd + ":" + keysStr[i], valuesStr[i]); } return(Manager.GetDatabase(GetOperationDB(db)).StringSet(vKeyValuePair)); }
/// <summary> /// 缓存单个字符串 /// </summary> /// <param name="key">键</param> /// <param name="value">值</param> /// <param name="expireMinutes">过期时间,单位:分钟</param> /// <param name="folder">目录,默认根目录</param> /// <param name="db">库,默认读取配置文件</param> /// <returns></returns> public static bool StringSet(string key, string value, int expireMinutes = 600, RedisFolderEnum folder = RedisFolderEnum.Root, RedisEnum db = RedisEnum.Default) { string strFd = GetDescription(folder); return(Manager.GetDatabase(GetOperationDB(db)).StringSet(StringExtension.IsBlank(strFd) ? key : strFd + ":" + key, value, TimeSpan.FromMinutes(expireMinutes))); }