public Task<IRedisClient> CreateClientAsync(RedisConnectionStringBuilder connectionString, BasicRedisSerializer serializer = null) { ThrowIfDisposed(); var tcs = new TaskCompletionSource<IRedisClient>(); var pool = _pools.GetOrAdd(connectionString.ToString(), k => new ConcurrentQueue<PoolItem>()); PoolItem item; if (pool.TryDequeue(out item)) tcs.SetResult(item.Client); else { CreateAndPrepareClient(connectionString, serializer) .ContinueWith(t => { if (t.IsFaulted) tcs.SetException(t.Exception.UnwrapAggregation()); else tcs.SetResult(t.Result); }); } return tcs.Task; }
public Task<IRedisClient> CreateClientAsync(string host, int port, int dbIndex = 0, BasicRedisSerializer serializer = null) { return CreateClientAsync(new RedisConnectionStringBuilder(host, port, dbIndex),serializer); }
private Task<IRedisClient> CreateAndPrepareClient(RedisConnectionStringBuilder connectionString, BasicRedisSerializer serializer) { var client = _redisClientsFactory(connectionString, serializer); return client.PrepareClientConnection(); }
public Task<IRedisClient> CreateClientAsync(string connectionString, BasicRedisSerializer serializer = null) { return CreateClientAsync(new RedisConnectionStringBuilder(connectionString),serializer); }
public PooledRedisClient(RedisClientsPool pool, RedisConnectionStringBuilder connectionString, BasicRedisSerializer serializer) : base(connectionString, serializer) { _pool = pool; }