private void CreateRedisClient() { string writeServerList = AppRuntime.Instance.CurrentApplication.ConfigSource.Config.Redis.WriteHosts; string readOnlyServerList = AppRuntime.Instance.CurrentApplication.ConfigSource.Config.Redis.ReadOnlyHosts; string[] writeHosts = writeServerList.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); string[] readOnlyHosts = readOnlyServerList.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); RedisClientManagerConfig config = new RedisClientManagerConfig(); config.MaxWritePoolSize = AppRuntime.Instance.CurrentApplication.ConfigSource.Config.Redis.MaxWritePoolSize; config.MaxReadPoolSize = AppRuntime.Instance.CurrentApplication.ConfigSource.Config.Redis.MaxReadPoolSize; config.AutoStart = AppRuntime.Instance.CurrentApplication.ConfigSource.Config.Redis.AutoStart; this.redisClientManager = new PooledRedisClientManager(writeHosts, readOnlyHosts, config); this.redisClient = (RedisClient)redisClientManager.GetClient(); this.redistTypedClient = this.redisClient.As <TMessage>(); this.redisDistributedLock = new DistributedLock(); this.redisDistributedLock.Lock(lockName, 0, 0, out this.lockExpire, this.redisClient); this.redisTypedTransaction = this.redistTypedClient.CreateTransaction(); }
/// <summary> /// 创建Redis事务操作 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="redisTransactionFactroy">委托</param> /// 时间:2016/11/4 14:47 /// 备注: public void CreateTransaction <T>(Action <IRedisTypedTransaction <T> > redisTransactionFactroy) where T : IHasId <string> { using (IRedisClient redisClient = PRM.GetClient()) { using (IRedisTypedClient <T> typedclient = redisClient.As <T>()) { using (IRedisTypedTransaction <T> trans = typedclient.CreateTransaction()) { redisTransactionFactroy(trans); } } } }
/// <summary> /// 删除多行 /// </summary> /// <typeparam name="T">实体类型</typeparam> /// <param name="numbers">编号集合</param> /// <exception cref="ArgumentNullException">numbers为null或长度为0</exception> public void RemoveRange(IEnumerable <string> numbers) { #region # 验证参数 if (numbers == null || !numbers.Any()) { throw new ArgumentNullException("ids", string.Format("要删除的{0}的编号集合不可为空!", typeof(T).Name)); } #endregion using (IRedisTypedTransaction <T> trans = this._redisWriteTypedClient.CreateTransaction()) { foreach (string number in numbers) { T entity = this.Single(number); trans.QueueCommand(x => x.Delete(entity)); } trans.Commit(); } }