Пример #1
0
        public static Task <IRedisClient> ConnectAsync(string host, int port, int dbIndex = 0, BasicRedisSerializer serializer = null)
        {
            var result = new RedisClient(new RedisConnectionStringBuilder(host, port, dbIndex), serializer);

            return(((IPrepareSupportRedisClient)result).PrepareClientConnection());
        }
Пример #2
0
        public static Task <IRedisClient> ConnectAsync(string connectionString, BasicRedisSerializer serializer = null)
        {
            var result = new RedisClient(new RedisConnectionStringBuilder(connectionString), serializer);

            return(((IPrepareSupportRedisClient)result).PrepareClientConnection());
        }
Пример #3
0
        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);
        }
Пример #4
0
 public Task <IRedisClient> CreateClientAsync(string host, int port, int dbIndex = 0, BasicRedisSerializer serializer = null)
 {
     return(CreateClientAsync(new RedisConnectionStringBuilder(host, port, dbIndex), serializer));
 }
Пример #5
0
 public Task <IRedisClient> CreateClientAsync(string connectionString, BasicRedisSerializer serializer = null)
 {
     return(CreateClientAsync(new RedisConnectionStringBuilder(connectionString), serializer));
 }
Пример #6
0
        private Task <IRedisClient> CreateAndPrepareClient(RedisConnectionStringBuilder connectionString, BasicRedisSerializer serializer)
        {
            var client = _redisClientsFactory(connectionString, serializer);

            return(client.PrepareClientConnection());
        }
Пример #7
0
 public PooledRedisClient(RedisClientsPool pool, RedisConnectionStringBuilder connectionString, BasicRedisSerializer serializer)
     : base(connectionString, serializer)
 {
     _pool = pool;
 }