agrupación de conexiones utilizando ASP.Net Core reids

===============================================

 2020/3 / 28_ primera edición              ccb_warlock          

 

===============================================

Recientemente tengo más tiempo para hacer el marco del trabajo de optimización, la razón se trate a Redis agrupación de conexiones es porque los datos del marco de procesamiento de la capa de enrutamiento en el momento de su lugar anormal ReDiS conexión se pueden optimizar, por lo que la función de agrupación de conexiones para Redis hicimos un estudio y pruebas.

 


En primer lugar, el valor de

1.1 Valor estanque

El valor aquí es simple mención en el diseño de la piscina es que cuando cierto tipo de conexiones necesitan crear varias ocasiones, y crear un costo mucho mayor que el coste de la reutilización se pueden seleccionar para optimizar la introducción del estanque este diseño.

En general, necesarios para definir el tamaño de la piscina cuando se inicializa la piscina.

Inicialmente, la piscina no es un objeto, cuando se requiere el objeto de obtener de la piscina (después de no crear automáticamente un objeto proporcionar un rastreados cuando se utiliza), cuando el objeto se utiliza hasta no hace un lanzamiento real, pero poner el objeto posterior acceso a la piscina a esperar a la siguiente necesidades de negocio.

 

Valor de 1,2 ReDiS estanque

Por lo general, en el proyecto de C # se utiliza principalmente como una rueda de operación StackExchange.Redis Redis, y después de la conexión TCP StackExchange.Redis ellos ReDiS mediante la creación de una serie de operaciones.

Ya que por TCP, sabemos que hay que hacer con el fin de seguimiento después de que el negocio de 3 vías apretón de manos, cuando el servicio de ejecución concurrente, estanque puede reducir mejor la sobrecarga de crear una conexión, mejorar la eficiencia conexión.

 


Dos, el paquete NuGet

 

StackExchange.Redis.ConnectionPool

PS. La versión actual es la 1.0.1 Uso

 


En tercer lugar, la introducción del proyecto de agrupación de conexiones Redis

3.1 precondición

Sólo probado el proyecto función de correlación núcleo asp.net base (2.2,3.1).

 

3.2 Adición de la información de configuración es redis

Trabajado en proyectos de centrales de ASP.NET debe ser consciente de que el sistema proporciona una grabación con los elementos de configuración appsettings.json e información de configuración en su plan de proyecto a través de la inyección de dependencia.

 

Appsettings.json hipótesis dice lo siguiente:

{
   " Redis " : {
     " Host " : " localhost " ,
     " Puerto " : 6379 ,
     " contraseña " : " 123456 " ,
     " poolsize " : 20 
  } 
}

 

3.3 Creación de la entidad que recibe la configuración definida

público  de clase RedisConfig 
{ 
    pública  cadena anfitrión { get ; establecer ; }
     Pública  int puerto { get ; establecer ; }
     Pública  cadena de contraseña { llegar ; establecer ; }
     Pública  int poolsize { get ; establecer ; } 
}

 

La inyección de dependencia se añade 3,4 agrupación de conexiones

Aquí el problema no se considera la estructura del código, seguido de los Startup.cs, añada lo siguiente:

público  de clase del inicio 
{ 
    Privado IConfiguration la {Configuración GET ;} 

    pública del (Configuración IConfiguration) Puesta en marcha 
    { 
         la configuración = Configuración; 
    } 

    pública la IServiceProvider ConfigureServices (Servicios IServiceCollection) 
    { 
        // TODO 

        // conjunto de acuerdo con el número mínimo de tráfico real de hilos 
        ThreadPool.SetMinThreads ( 200 es , 200 es ); 
         
        var redisConfig = Configuration.GetSection ( " la Redis " ) .Busque <redisConfig> (); 

        varredisOptions = nuevos ConfigurationOptions 
        { 
            EndPoints = 
            { 
                {redisConfig.Host, redisConfig.Port} 
            }, 
            contraseña = redisConfig.Password, 
        }; 

        services.AddRedisConnectionPool (redisOptions, redisConfig.PoolSize); 

        // TODO 
    } 

}

 

Al proporcionar un método StackExchange.Redis.ConnectionPool llamada, que tiene el conjunto de conexiones físicas ReDiS inyecta en todo el proyecto.

 


En cuarto lugar, el uso de Redis de agrupación de conexiones

Desde la trama I se optimiza datos piscina interceptores conexión de la capa de enrutamiento para ir, para hacerlo se describe como un ejemplo.

público  de clase RouteInterceptor: BaseInterceptor 
{ 
    privado ObjectPool <PooledConnectionMultiplexer> Pool { get ; establecer ; } 

    Pública RouteInterceptor (ObjectPool <PooledConnectionMultiplexer> piscina) 
    { 
        piscina = piscina; 
    } 

    Protegido  override  void Handler (IInvocation invocación) 
    { 
        var db = 1 ;
        // TODO (获取要操作的db) 

        PooledConnectionMultiplexer cliente = nula ;
        tratar 
        { 
            cliente = Pool.GetObject ();
            var Clientdb = redis.GetDatabase (db) 
            
            // TODO 
        }
         catch (Exception e) 
        { 
            // TODO 
        } 
        
        try 
        { 
            invocation.Proceed (); 
        } 
        Catch (Exception e) 
        { 
            // TODO 
        }
         finalmente 
        { 
            cliente ? .Disponer(); 
        } 
    } 
}

 

Redis entonces que operan de acuerdo con el método utilizado StackExchange.Redis en él.

 

 

 

Supongo que te gusta

Origin www.cnblogs.com/straycats/p/12585461.html
Recomendado
Clasificación