/// <summary> /// 分布式锁 /// </summary> /// <param name="serviceName"></param> /// <param name="ipPort"></param> /// <param name="passwords"></param> /// <param name="type"></param> /// <param name="key"></param> /// <param name="timeout"></param> /// <param name="rolling"></param> public RedisLocker(string serviceName, string ipPort, string passwords, RedisConnectType type, string key, int timeout = 30 * 1000, int rolling = 50) { _redisHelper = RedisHelperBuilder.Build(serviceName, ipPort, passwords, type); if (!_redisHelper.GetRedisOperation().Lock(key, timeout, rolling)) { throw new Exception("RedisLocker申请锁已超时!"); } }
/// <summary> /// 初始化 /// </summary> /// <param name="sectionName"></param> /// <param name="type"></param> /// <param name="master"></param> /// <param name="password"></param> /// <param name="serviceName"></param> public void Init(string sectionName, RedisConnectType type, string master, string password = "", string serviceName = "") { var redisConfig = new RedisConfig() { SectionName = sectionName, Type = type, Masters = master }; if (!string.IsNullOrEmpty(serviceName)) { redisConfig.ServiceName = serviceName; } if (!string.IsNullOrEmpty(password)) { redisConfig.Password = password; } this.Init(redisConfig); }
/// <summary> /// 初始化 /// </summary> /// <param name="sectionName"></param> /// <param name="type"></param> /// <param name="master"></param> /// <param name="password"></param> /// <param name="serviceName"></param> /// <param name="poolSize"></param> /// <param name="busyRetry"></param> /// <param name="busyRetryWaitMS"></param> internal void Init(string sectionName, RedisConnectType type, string master, string password = "", string serviceName = "", int poolSize = 1, int busyRetry = 10, int busyRetryWaitMS = 1000) { _redisHelper.Init(sectionName, type, master, password, serviceName); }
/// <summary> /// 自定义初始化 /// </summary> /// <param name="name"></param> /// <param name="ipPort"></param> /// <param name="passwords"></param> /// <param name="type"></param> internal void Init(string name, string ipPort, string passwords, RedisConnectType type = RedisConnectType.Instance) { _redisHelper.Init(name, type, ipPort, passwords); }
/// <summary> /// 自定义指定配置连接 /// </summary> /// <param name="name">这个并非是配置节点名,而是逻辑名</param> /// <param name="ipPort"></param> /// <param name="passwords"></param> /// <param name="type"></param> /// <returns></returns> public static RedisHelper Build(string name, string ipPort, string passwords, RedisConnectType type = 0) { var redisHelper = new RedisHelper(); redisHelper.CreateInstance(_instance); redisHelper.Init(name, ipPort, passwords, type); return(redisHelper); }