コード例 #1
0
        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();
        }
コード例 #2
0
 /// <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);
             }
         }
     }
 }
コード例 #3
0
        /// <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();
            }
        }