복붙노트

[REDIS] ASP.net MVC에서 푸른 레디 스 StackExchange.Redis ConnectionMultiplexer

REDIS

ASP.net MVC에서 푸른 레디 스 StackExchange.Redis ConnectionMultiplexer

나는 푸른 레디 스 캐시에 연결하기 위해이 연습을 수행하는 것이 가장 좋습니다 읽었습니다 :

private static ConnectionMultiplexer Connection { get { return LazyConnection.Value; } }

    private static readonly Lazy<ConnectionMultiplexer> LazyConnection =
        new Lazy<ConnectionMultiplexer>(
            () =>
            {
                return
                    ConnectionMultiplexer.Connect(connStinrg);
            });

그리고 푸른 레디 스의 문서에 따르면 :

그래서 내 ASP.net MVC 응용 프로그램을 통해 ConnectionMultiplexer를 공유하기위한 가장 좋은 방법은 무엇입니까? 이 Global.asax에 호출 할 경우, 또는 내가 컨트롤러, 또는 떨어지게 한 번씩 초기화해야한다. 다른?

또한 나는 내가 컨트롤러에서 서비스에 ConnectionMultiplexer의 인스턴스를 보내야 서비스 내부 레디 스와 통신 할 그렇다면, 응용 프로그램과 통신 할 임무되는 서비스를, 또는 나는 내 모든 서비스를 초기화해야한다, 또는?

당신은 내가 여기에 손실을 조금있어 볼 수 있듯이, 그래서 도움을 기쁘게!

해결법

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

    1.워드 프로세서는 ConnectionMultiplexer 하나의 인스턴스 만이 그것을 다시해야한다는 점에서 옳다. 하나 이상 작성하지 마십시오, 그것을 공유하고 재사용 할 것을 권장합니다. 이제 생성의 경우, 그것은 컨트롤러 또는 Global.asax에에 있으면 안됩니다. 일반적으로 당신은 ConnectionMultiplexer 개인 정적 인스턴스 내부 및 생성 코드가 있어야한다 그의를 사용하여 자신의 RedisCacheClient 클래스 (어쩌면 일부 ICACHE 인터페이스를 구현)를 가져야한다 - 당신이 당신의 질문에 쓴 그대로. 레이지 부분은 처음 사용될 때까지 ConnectionMultiplexer의 생성을 지연한다.

    워드 프로세서는 ConnectionMultiplexer 하나의 인스턴스 만이 그것을 다시해야한다는 점에서 옳다. 하나 이상 작성하지 마십시오, 그것을 공유하고 재사용 할 것을 권장합니다. 이제 생성의 경우, 그것은 컨트롤러 또는 Global.asax에에 있으면 안됩니다. 일반적으로 당신은 ConnectionMultiplexer 개인 정적 인스턴스 내부 및 생성 코드가 있어야한다 그의를 사용하여 자신의 RedisCacheClient 클래스 (어쩌면 일부 ICACHE 인터페이스를 구현)를 가져야한다 - 당신이 당신의 질문에 쓴 그대로. 레이지 부분은 처음 사용될 때까지 ConnectionMultiplexer의 생성을 지연한다.

  2. ==============================

    2.애들 아;

    애들 아;

    당신은 다음과 같은 코드를 사용하여 StackExchange.Redis ConnectionMultiplexer을 다시 사용할 수 있습니다. 그것은 코드의 계층에서 사용할 수 있습니다.

    public class RedisSharedConnection
    {
        private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
        {
            ConnectionMultiplexer connectionMultiplexer = ConnectionMultiplexer.Connect(ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString);
            connectionMultiplexer.PreserveAsyncOrder = false;
            return connectionMultiplexer;
        });
    
        public static ConnectionMultiplexer Connection
        {
            get
            {
                return lazyConnection.Value;
            }
        }
    }
    
  3. from https://stackoverflow.com/questions/32525273/azure-redis-stackexchange-redis-connectionmultiplexer-in-asp-net-mvc by cc-by-sa and MIT license