/// <summary>创建连接客户端</summary> /// <returns></returns> protected virtual RedisClient OnCreate() { var server = Server?.Trim(); if (server.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(Server)); } // 初始化服务器地址列表 var svrs = _servers; if (svrs == null) { var ss = server.Split(',', StringSplitOptions.RemoveEmptyEntries); var uris = new NetUri[ss.Length]; for (var i = 0; i < ss.Length; i++) { var svr2 = ss[i]; if (!svr2.Contains("://")) { svr2 = "tcp://" + svr2; } var uri = new NetUri(svr2); if (uri.Port == 0) { uri.Port = 6379; } uris[i] = uri; } svrs = _servers = uris; } // 一定时间后,切换回来主节点 var idx = _idxServer; if (idx > 0) { var now = DateTime.Now; if (_nextTrace.Year < 2000) { _nextTrace = now.AddSeconds(300); } if (now > _nextTrace) { _nextTrace = DateTime.MinValue; idx = _idxServer = 0; } } if (idx != _idxLast) { XTrace.WriteLine("Redis使用 {0}", svrs[idx % svrs.Length]); _idxLast = idx; } // 选择服务器,修改实例名,后面用于埋点 var svr = svrs[idx % svrs.Length]; if (Name.IsNullOrEmpty() || Name.EqualIgnoreCase("Redis", "FullRedis")) { Name = svr.Host ?? svr.Address.ToString(); } var rc = new RedisClient(this, svr) { Log = Log }; //if (rds.Db > 0) rc.Select(rds.Db); return(rc); }
/// <summary>创建连接客户端</summary> /// <returns></returns> protected virtual RedisClient OnCreate() { var svr = Server?.Trim(); if (svr.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(Server)); } var svrs = _servers; if (svrs == null) { var ss = svr.Split(","); var uris = new NetUri[ss.Length]; for (var i = 0; i < ss.Length; i++) { var svr2 = ss[i]; if (!svr2.Contains("://")) { svr2 = "tcp://" + svr2; } var uri = new NetUri(svr2); if (uri.Port == 0) { uri.Port = 6379; } uris[i] = uri; } svrs = _servers = uris; } // 一定时间后,切换回来主节点 var idx = _idxServer; if (idx > 0) { var now = DateTime.Now; if (_nextTrace.Year < 2000) { _nextTrace = now.AddSeconds(300); } if (now > _nextTrace) { _nextTrace = DateTime.MinValue; idx = _idxServer = 0; } } if (idx != _idxLast) { XTrace.WriteLine("Redis使用 {0}", svrs[idx % svrs.Length]); _idxLast = idx; } var rc = new RedisClient(this, svrs[idx % svrs.Length]) { Log = Log }; //if (rds.Db > 0) rc.Select(rds.Db); return(rc); }