복붙노트

[REDIS] 얼마나 자주 Booksleeve 연결 / 폐해야합니까?

REDIS

얼마나 자주 Booksleeve 연결 / 폐해야합니까?

나는 C의 # / ASP.NET 4 응용 프로그램에서 Booksleeve 라이브러리를 사용하고 있습니다. 현재 RedisConnection 객체 내 MonoLink 클래스에서 정적 개체입니다. 나는이 연결 개방을 유지해야 하는가, 또는 (내가 지금하고 있어요로) 나는 각 쿼리 / 트랜잭션 (transaction) 후 폐쇄 / 개방해야 하는가? 그냥 약간의 혼동. 지금 현재로, 그것을 사용하고 있는데 어떻게 여기입니다 :

public static MonoLink CreateMonolink(string URL)
{
    redis.Open();
    var transaction = redis.CreateTransaction();

    string Key = null;

    try
    {
        var IncrementTask = transaction.Strings.Increment(0, "nextmonolink");
        if (!IncrementTask.Wait(5000))
        {
            transaction.Discard();
            throw new System.TimeoutException("Monolink index increment timed out.");
        }

        // Increment complete
        Key = string.Format("monolink:{0}", IncrementTask.Result);

        var AddLinkTask = transaction.Strings.Set(0, Key, URL);
        if (!AddLinkTask.Wait(5000))
        {
            transaction.Discard();
            throw new System.TimeoutException("Add monolink creation timed out.");
        }

        // Run the transaction
        var ExecTransaction = transaction.Execute();
        if (!ExecTransaction.Wait(5000))
        {
            throw new System.TimeoutException("Add monolink transaction timed out.");
        }
    }
    catch (Exception ex)
    {
        transaction.Discard();
        throw ex;
    }
    finally
    {
        redis.Close(false);
    }

    // Link has been added to redis
    MonoLink ml = new MonoLink();
    ml.Key = Key;
    ml.URL = URL;

    return ml;
}

감사합니다, 사전에 어떤 응답 / 통찰력. 또한,이 라이브러리에 대한 공식 문서의 어떤 종류가 있습니까? 매우 고맙습니다. ^ _ ^.

해결법

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

    1.Booksleeve의 저자에 따르면,

    Booksleeve의 저자에 따르면,

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

    2.새 연결을 쿼리 / 트랜잭션을 만들고 싶어 때마다 열리고 레디 스를 동시에 연결된 클라이언트의 높은 수준을 위해 설계되어 있지만 그 수는 수만의 주위에있는 경우, 성능 문제가있을 수 있습니다 경우 약간의 오버 헤드가 아마 있습니다. 지금까지 내가 (레디 스 자체가이 기능이 없기 때문에) booksleeve이 ​​물건을 지원하는지 확인해야하므로 연결 풀링, 클라이언트 라이브러리에 의해 수행되어야한다 알고있다. 그렇지 않으면 연결을 열 때 응용 프로그램을 시작하고 (경우에 당신이 어떤 이유로 레디 스에 연결된 클라이언트를 평행 필요하지 않음) 그것의 수명을 위해 열 유지해야합니다.

    새 연결을 쿼리 / 트랜잭션을 만들고 싶어 때마다 열리고 레디 스를 동시에 연결된 클라이언트의 높은 수준을 위해 설계되어 있지만 그 수는 수만의 주위에있는 경우, 성능 문제가있을 수 있습니다 경우 약간의 오버 헤드가 아마 있습니다. 지금까지 내가 (레디 스 자체가이 기능이 없기 때문에) booksleeve이 ​​물건을 지원하는지 확인해야하므로 연결 풀링, 클라이언트 라이브러리에 의해 수행되어야한다 알고있다. 그렇지 않으면 연결을 열 때 응용 프로그램을 시작하고 (경우에 당신이 어떤 이유로 레디 스에 연결된 클라이언트를 평행 필요하지 않음) 그것의 수명을 위해 열 유지해야합니다.

    내가 그것을 사용하는 방법에 대한 찾을 수 있었던 유일한 문서는 테스트가 그것의 소스 코드에서 폴더이었다.

  3. ==============================

    3.참고로 (bzlm의 대답 @ 계속), 난 항상 BookSleeve를 사용하여 동일한 레디 스 연결을 제공하는 싱글 생성 (이 닫혀의 경우는 만들어지는 것입니다. 그 밖에, 기존의 연결이 제공되고있다).

    참고로 (bzlm의 대답 @ 계속), 난 항상 BookSleeve를 사용하여 동일한 레디 스 연결을 제공하는 싱글 생성 (이 닫혀의 경우는 만들어지는 것입니다. 그 밖에, 기존의 연결이 제공되고있다).

    이것 좀 봐 : https://stackoverflow.com/a/8777999/290343

    당신은 그런 식으로 소비 :

    RedisConnection connection = Redis.RedisConnectionGateway.Current.GetConnection();
    
  4. from https://stackoverflow.com/questions/7543751/how-often-should-i-open-close-my-booksleeve-connection by cc-by-sa and MIT license