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()); }
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)); }