示例#1
0
        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);
 }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
            }
        }
示例#8
0
        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);
        }
示例#9
0
文件: RedisUtils.cs 项目: cR0xSS/JFS
        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);
        }
示例#10
0
        /// <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));
        }