Beispiel #1
0
        public IRedisClient Create(RedisSettings settings)
        {
            RedisManagerPool client = null;

            Lock.EnterUpgradeableReadLock();
            try
            {
                if (Cache.TryGetValue(settings.Signature, out client) == false)
                {
                    Lock.EnterWriteLock();
                    try
                    {
                        if (Cache.TryGetValue(settings.Signature, out client) == false)
                        {
                            client = new RedisManagerPool(settings.Hosts.ToArray());

                            Cache[settings.Signature] = client;
                        }
                    }
                    finally
                    {
                        Lock.ExitWriteLock();
                    }
                }
            }
            finally
            {
                Lock.ExitUpgradeableReadLock();
            }

            return(client.GetClient());
        }
Beispiel #2
0
        public RedisSink(string queueName, IEnumerable <string> hosts)
        {
            var settings = new RedisSettings()
            {
                QueueName = queueName
            };

            settings.Hosts.AddRange(hosts);
            _getSettings = () => Task.FromResult(settings);
        }
 private IRedisClient GetClient(RedisSettings settings)
 {
     return(_clientFactory.Create(settings));
 }