Ejemplo n.º 1
0
        internal RedisConnectionPool(string connectionString, int poolSize, ConnectionVotingTypes connectionVotingType, Func <Lazy <ConnectionMultiplexer>, object> poolFilter)
        {
            this.ConnectionVotingType   = connectionVotingType;
            ConnectionMultiplexerFilter = poolFilter;

            lock (lockPookRoundRobin)
            {
                if (ConnectionMultiplexers == null)
                {
                    ConnectionMultiplexers = new Lazy <ConnectionMultiplexer> [poolSize];
                }

                for (int i = 0; i < poolSize; i++)
                {
                    if (ConnectionMultiplexers[i] == null)
                    {
                        var connectionMultiplexer = ConnectionMultiplexer.Connect(connectionString);

                        ConnectionMultiplexers[i] = new Lazy <ConnectionMultiplexer>(() => connectionMultiplexer);
                    }
                }
            }
        }
 internal static RedisConnectionPool GetConnectionPool(string connectionString, int poolSize, ConnectionVotingTypes connectionVotingType, Func <Lazy <ConnectionMultiplexer>, object> poolFilter)
 {
     if (!ConnectionPools.ContainsKey(connectionString))
     {
         lock (LockObject)
         {
             if (!ConnectionPools.ContainsKey(connectionString))
             {
                 return(ConnectionPools.GetOrAdd(connectionString, new RedisConnectionPool(connectionString, poolSize, connectionVotingType, poolFilter)));
             }
             else
             {
                 return(ConnectionPools[connectionString]);
             }
         }
     }
     else
     {
         return(ConnectionPools[connectionString]);
     }
 }