/// <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); }); } }
private IDatabase GetRedisClient(RedisEndPoint info) { return (_cacheClient.Value .GetClient(info, ConnectTimeout)); }