public static CachingFramework.Redis.RedisContext Init(IConfiguration configuration) { if (instance == null) { var redisConf = new StackExchange.Redis.ConfigurationOptions { Password = "******", KeepAlive = 60, AbortOnConnectFail = false, ConnectRetry = 1000, ConnectTimeout = 10000 }; // var RedisEndPoints = configuration.GetSection("RedisEndPoints"); // foreach (IConfigurationSection endPoint in RedisEndPoints.GetChildren()) { redisConf.EndPoints.Add(endPoint.Value); } // instance = new CachingFramework.Redis.RedisContext(redisConf); } return(instance); }
static RedisConnectionHelper() { _redisConnection = new Lazy <StackExchange.Redis.ConnectionMultiplexer>(() => { StackExchange.Redis.ConfigurationOptions options = new StackExchange.Redis.ConfigurationOptions(); return(StackExchange.Redis.ConnectionMultiplexer.Connect(System.Configuration.ConfigurationManager.AppSettings["RedisKey"])); }); }
public RedisServiceSettings(StackExchange.Redis.ConfigurationOptions options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } _options = options; }
public StackExchange.Redis.ConfigurationOptions GetRedisConfig() { if (this.env == null) { return(null); } NGLib.DATA.DATAVALUES.DataValues dv = this.env as NGLib.DATA.DATAVALUES.DataValues; StackExchange.Redis.ConfigurationOptions redisconfig = new StackExchange.Redis.ConfigurationOptions(); redisconfig.EndPoints.Add(dv.GetString("/param/redis"), Convert.ToInt32(dv.GetAttribute("/param/redis", "port"))); redisconfig.Password = dv.GetAttribute("/param/redis", "port"); return(redisconfig); }
/// <summary> /// Adds Redis as the configuration subscriber. /// </summary> /// <param name="configuration">The string configuration for the Redis multiplexer.</param> public void AddRedisSubscriber(string configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (CreateSubscriber != null) { throw new InvalidOperationException("A subscriber has already been configured."); } var options = RedisOptions.Parse(configuration); CreateSubscriber = () => new RedisSubscriber(options); }
/// <summary> /// Adds Redis as the configuration subscriber. /// </summary> /// <param name="configure">Configure options for the Redis multiplexer.</param> public void AddRedisSubscriber(Action <RedisOptions> configure) { if (configure == null) { throw new ArgumentNullException(nameof(configure)); } if (CreateSubscriber != null) { throw new InvalidOperationException("A subscriber has already been configured."); } var options = new RedisOptions(); configure(options); CreateSubscriber = () => new RedisSubscriber(options); }
/// <summary> /// Obtenir du cache partagé /// </summary> /// <param name="DirectInvoiceid"></param> /// <returns></returns> public DirectInvoice GetDirectInvoice(string iddirectinvoice) { DirectInvoice retour = null; try { // Obtien d'abord l'objet sur MemCached si Existe if (env != null) { StackExchange.Redis.ConfigurationOptions redisconfig = new StackExchange.Redis.ConfigurationOptions(); redisconfig.EndPoints.Add("22ec9a54-2921-43af-a4e9-9b1e7aff2b9b.pdb.ovh.net", 21784); redisconfig.Password = "******"; StackExchange.Redis.ConnectionMultiplexer redis = StackExchange.Redis.ConnectionMultiplexer.Connect(redisconfig); StackExchange.Redis.IDatabase redisDb = redis.GetDatabase(); StackExchange.Redis.RedisKey key = iddirectinvoice; StackExchange.Redis.RedisValue val = redisDb.StringGet(key, StackExchange.Redis.CommandFlags.None); if (!string.IsNullOrWhiteSpace(val)) { retour = new DirectInvoice(); retour.FromStringData(val); } } // sinon regarde en base if (retour == null) { Dictionary <string, object> ins = new Dictionary <string, object>(); ins.Add("iddirectinvoice", iddirectinvoice); retour = this.GetOneDefault <DirectInvoice>(ins); } return(retour); } catch (Exception ex) { throw new Exception("GetDirectInvoice " + ex.Message, ex); } }
public object Create(object parent, object configContext, XmlNode section) { var options = new StackExchange.Redis.ConfigurationOptions(); foreach (var item in section.ChildNodes) { var node = item as XmlNode; if (null == node || node.NodeType != XmlNodeType.Element) { continue; } var host = node.Attributes["host"].Value; if (!string.IsNullOrEmpty(host) && int.TryParse(node.Attributes["port"].Value, out int port)) { options.EndPoints.Add(host, port); } } return(options); }
static StackExchange.Redis.ConfigurationOptions BuildRedisConfiguration() { var options = new StackExchange.Redis.ConfigurationOptions(); foreach (var server in Configurations.RedisSettingsManager.Servers) { options.EndPoints.Add(server.Server, (int)server.Port); } options.ClientName = Configurations.RedisSettingsManager.ClientName; options.AllowAdmin = Configurations.RedisSettingsManager.AllowAdmin; options.ConnectTimeout = Configurations.RedisSettingsManager.ConnectTimeout; options.AbortOnConnectFail = false; options.ReconnectRetryPolicy = new StackExchange.Redis.LinearRetry(Configurations.RedisSettingsManager.ConnectTimeout); if (Configurations.RedisSettingsManager.AuthRequired) { options.Password = Configurations.RedisSettingsManager.Password; } return(options); }
/// <summary> /// 创建链接池管理对象 /// </summary> public static RedisCacheManage Create(RedisCacheConfig config) { _KeyPrefix = config.KeyPrefix + ":"; if (_Locator == null) { lock (_syncCreateInstance) { if (_Locator == null) { if (string.IsNullOrEmpty(config.SentineList) || !_supportSentinal) { //Redis服务器相关配置 string writeServerList = config.WriteServerList; string readServerList = config.ReadServerList; var writeServerArray = RedisCacheConfigHelper.SplitString(writeServerList, ",").ToList(); var readServerArray = RedisCacheConfigHelper.SplitString(readServerList, ",").ToList(); var Nodes = new List <string>(); //只有一个写,多个读的情况 /* * Redis.ReadServerList 192.168.100.51:16378,192.168.100.51:26378 * Redis.WriteServerList 192.168.100.51:6378 */ if (writeServerArray.Count == 1) { var writeServer = writeServerArray[0]; var NodeName = writeServerArray[0]; if (!_clusterConfigOptions.ContainsKey(NodeName)) { StackExchange.Redis.ConfigurationOptions configOption = new StackExchange.Redis.ConfigurationOptions(); configOption.ServiceName = NodeName; configOption.Password = config.Password; configOption.AbortOnConnectFail = false; configOption.DefaultDatabase = config.DBNum; configOption.Ssl = config.Ssl; foreach (var ipAndPort in writeServerArray.Union(readServerArray)) { configOption.EndPoints.Add(ipAndPort); } _clusterConfigOptions.Add(writeServer, configOption); } Nodes.Add(NodeName); } /* * 多个写和多个读 * Redis.ReadServerList [email protected]:16378,[email protected]:16379,[email protected]:16380,[email protected]:16381,[email protected]:16382,[email protected]:26378,[email protected]:26379,[email protected]:26380,[email protected]:26381,[email protected]:26382 * Redis.WriteServerList [email protected]:6378,[email protected]:6379,[email protected]:6380,[email protected]:6381,[email protected]:6382 */ else { for (int i = 0; i < writeServerArray.Count; i++) { //存在多个Master服务器的时候 if (writeServerArray[i].IndexOf("@") > 0) { //集群名称() var NodeName = RedisCacheConfigHelper.GetServerClusterName(writeServerArray[i]); //主服务器名称 var masterServer = RedisCacheConfigHelper.GetServerHost(writeServerArray[i]); //主服务器列表 var masterServerIPAndPortArray = RedisCacheConfigHelper.GetServerList(config.WriteServerList, NodeName); //从服务器列表 var slaveServerIPAndPortArray = RedisCacheConfigHelper.GetServerList(config.ReadServerList, NodeName); //当前集群的配置不存在 if (!_clusterConfigOptions.ContainsKey(NodeName)) { StackExchange.Redis.ConfigurationOptions configOption = new StackExchange.Redis.ConfigurationOptions(); configOption.ServiceName = NodeName; configOption.Password = config.Password; configOption.AbortOnConnectFail = false; configOption.DefaultDatabase = config.DBNum; configOption.Ssl = config.Ssl; foreach (var ipAndPort in masterServerIPAndPortArray.Union(slaveServerIPAndPortArray).Distinct()) { configOption.EndPoints.Add(RedisCacheConfigHelper.GetIP(ipAndPort), RedisCacheConfigHelper.GetPort(ipAndPort)); } _clusterConfigOptions.Add(NodeName, configOption); } Nodes.Add(NodeName); } else { //192.168.10.100:6379 var NodeName = writeServerArray[i]; if (!_clusterConfigOptions.ContainsKey(NodeName)) { StackExchange.Redis.ConfigurationOptions configOption = new StackExchange.Redis.ConfigurationOptions(); configOption.ServiceName = NodeName; configOption.Password = config.Password; configOption.AbortOnConnectFail = false; configOption.DefaultDatabase = config.DBNum; configOption.Ssl = config.Ssl; configOption.EndPoints.Add(RedisCacheConfigHelper.GetIP(NodeName), RedisCacheConfigHelper.GetPort(NodeName)); _clusterConfigOptions.Add(NodeName, configOption); } Nodes.Add(NodeName); } } } _Locator = new KetamaHash.KetamaNodeLocator(Nodes, _VIRTUAL_NODE_COUNT); } else { List <string> sentinelMasterNameList = new List <string>(); List <string> sentinelServerHostList = new List <string>(); var SentineList = RedisCacheConfigHelper.SplitString(config.SentineList, ",").ToList(); for (int i = 0; i < SentineList.Count; i++) { var args = RedisCacheConfigHelper.SplitString(SentineList[i], "@").ToList(); var ServiceName = args[0]; var hostName = args[1]; var endPoint = RedisCacheConfigHelper.SplitString(hostName, ":").ToList(); var ip = endPoint[0]; //IP var port = int.Parse(endPoint[1]); //端口 sentinelMasterNameList.Add(ServiceName); sentinelServerHostList.Add(hostName); if (!_clusterConfigOptions.ContainsKey(hostName)) { //连接sentinel服务器 StackExchange.Redis.ConfigurationOptions sentinelConfig = new StackExchange.Redis.ConfigurationOptions(); sentinelConfig.ServiceName = ServiceName; sentinelConfig.EndPoints.Add(ip, port); sentinelConfig.AbortOnConnectFail = false; sentinelConfig.DefaultDatabase = config.DBNum; sentinelConfig.TieBreaker = ""; //这行在sentinel模式必须加上 sentinelConfig.CommandMap = StackExchange.Redis.CommandMap.Sentinel; sentinelConfig.DefaultVersion = new Version(3, 0); _clusterConfigOptions[hostName] = sentinelConfig; } else { StackExchange.Redis.ConfigurationOptions sentinelConfig = _clusterConfigOptions[hostName] as StackExchange.Redis.ConfigurationOptions; sentinelConfig.EndPoints.Add(ip, port); _clusterConfigOptions[hostName] = sentinelConfig; } } //初始化Reds分片定位器 _Locator = new KetamaHash.KetamaNodeLocator(sentinelServerHostList, _VIRTUAL_NODE_COUNT); } } } } return(new RedisCacheManage(config.DBNum)); }