示例#1
0
        /// <summary>
        /// 初始化设置哈希节点容器
        /// </summary>
        /// <remarks>
        ///     <para>创建:张宏伟</para>
        ///     <para>日期:2016/4/2</para>
        /// </remarks>
        private void InitSettingHashStorage()
        {
            foreach (var dataContext in DataContextPool)
            {
                var hash = new ConsistentHash <RedisEndPoint>(_hashAlgorithm);

                dataContext.Value.ForEach(v =>
                {
                    var db        = "";
                    var dbs       = v.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries);
                    var server    = v.Split('@');
                    var endpoints = server.Length > 1 ? server[1].Split(':') : server[0].Split(':');
                    var account   = server.Length > 1 ? server[0].Split(':') : null;
                    var username  = account != null && account.Length > 1 ? account[0] : null;
                    var password  = server.Length > 1 ? account[account.Length - 1] : this._password;
                    if (endpoints.Length <= 1)
                    {
                        return;
                    }
                    if (dbs.Length > 1)
                    {
                        db = dbs[dbs.Length - 1];
                    }
                    var node = new RedisEndPoint()
                    {
                        Host     = endpoints[0],
                        Port     = int.Parse(endpoints[1]),
                        Password = password,
                        MaxSize  = this._maxSize,
                        MinSize  = this._minSize,
                        DbIndex  = int.Parse(db) //数据库索引 127.0.0.1:2222::2 索引为2
                    };
                    hash.Add(node, string.Format("{0}:{1}", node.Host, node.Port));
                    dicHash.GetOrAdd(dataContext.Key, hash);
                });
            }
        }
示例#2
0
 private IDatabase GetRedisClient(RedisEndPoint info)
 {
     return
         (_cacheClient.Value
          .GetClient(info, ConnectTimeout));
 }