복붙노트

[REDIS] `StackExchange.Redis.ConnectionMultiplexer`는`AddStatic` 또는 .NET 핵심 의존성 주입에`AddScope`해야 하는가?

REDIS

`StackExchange.Redis.ConnectionMultiplexer`는`AddStatic` 또는 .NET 핵심 의존성 주입에`AddScope`해야 하는가?

내가 StackExchange.Redis를 사용하여 .NET 코어에 레디 스 연결을 추가 해요, 그것은 현재 다음과 같은 :

public static IServiceCollection AddRedisMultiplexer(
    this IServiceCollection services,
    Func<ConfigurationOptions> getOptions = null)
{
    // Get the options or assume localhost, as these will be set in Startup.ConfigureServices assume they won't change
    var options = getOptions?.Invoke() ?? ConfigurationOptions.Parse("localhost");

    // The Redis is a singleton, shared as much as possible.
    return services.AddSingleton<IConnectionMultiplexer>(provider => ConnectionMultiplexer.Connect(options));
}

그런 다음 시작에

public void ConfigureServices(IServiceCollection services)
{
    services.AddRedisMultiplexer(() => 
        ConfigurationOptions.Parse(Configuration["ConnectionStrings:Redis"]));
    ...

이것은 그때 의존성 주입 어디를위한 IConnectionMultiplexer를 사용할 수 있다는 것을 의미합니다.

내 질문은 : 나는 전체 응용 프로그램의 단일 인스턴스를 유지하는 AddSingleton 사용했습니다 있도록 ConnectionMultiplexer는 재사용 할 수 있도록 설계되었습니다. 그러나 나는 또한 요청 기간 동안 하나를 사용 AddScoped를 사용할 수 있습니다. 어느 것이 더 좋은 이유는 무엇입니까?

해결법

  1. ==============================

    1.응용 프로그램에 예상되는 부하는 무엇인가? 당신이 많은 동시성이있는 경우, 나는 시작하는 불필요한 부담과 모든 요청에 ​​가까운 많은 연결을 의미 AddScoped를 사용하여 생각합니다.

    응용 프로그램에 예상되는 부하는 무엇인가? 당신이 많은 동시성이있는 경우, 나는 시작하는 불필요한 부담과 모든 요청에 ​​가까운 많은 연결을 의미 AddScoped를 사용하여 생각합니다.

    또한 이러한 관찰은 AddSingleton를 사용해야 쇼 이럴

    또한, ConnectionMultiplexer (IMHO)의 단 하나의 인스턴스를 가진 메모리를 저장합니다.

  2. from https://stackoverflow.com/questions/40844665/should-stackexchange-redis-connectionmultiplexer-be-addstatic-or-addscope by cc-by-sa and MIT license