복붙노트

[REDIS] 이름 길이에 미치는 영향 성능은 레디 스에서합니까?

REDIS

이름 길이에 미치는 영향 성능은 레디 스에서합니까?

$ userId를 : 나는 예를 설정-allBooksBelongToUser 위해, 레디 스의 이름 자세한 사용하려면.

이 괜찮 또는 성능에 영향을합니까?

해결법

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

    1.사용에 대해 얘기의 핵심은 정말로 그렇게 오래되지 않습니다.

    사용에 대해 얘기의 핵심은 정말로 그렇게 오래되지 않습니다.

    만약 수득 예 키 세트를위한, 일련의 검색 방법은 O (1)이다. 세트 (아니면 sdiff, SUNION 소결)에보다 복잡한 작업이 O (N)에있다. 기회는 $ 사용자 ID 채우는 것은 더 이상 키를 사용하는 것보다 더 비용이 많이 드는 작업이라고합니다.

    당신이 SRC의 "GET"테스트를 수정하면 레디 스가, 벤치 마크 유틸리티라고 레디 스 벤치 마크와 함께 제공 / 레디 스-benchmark.c을 그래서 그들은 키가 메이크업 설치 한 후, 당신은 짧은 키 테스트를 실행할 수 그냥 "foo는"입니다 :

    diff --git a/src/redis-benchmark.c b/src/redis-benchmark.c
    --- a/src/redis-benchmark.c
    +++ b/src/redis-benchmark.c
    @@ -475,11 +475,11 @@
             benchmark("MSET (10 keys)",cmd,len);
             free(cmd);
    
    -        len = redisFormatCommand(&cmd,"SET foo:rand:000000000000 %s",data);
    +        len = redisFormatCommand(&cmd,"SET foo %s",data);
             benchmark("SET",cmd,len);
             free(cmd);
    
    -        len = redisFormatCommand(&cmd,"GET foo:rand:000000000000");
    +        len = redisFormatCommand(&cmd,"GET foo");
             benchmark("GET",cmd,len);
             free(cmd);
    

    여기에 짧은 키 "foo는"3 개 후속 실행에 대한 GET 시험 속도는 다음과 같습니다

    59880.24 requests per second
    58139.53 requests per second
    58479.53 requests per second
    

    ": 1234567890 세트 - allBooksBelongToUser"여기 소스를 다시 수정하고 열쇠를 변경 한 후 GET 시험 속도는 다음과 같습니다

    60240.96 requests per second
    60606.06 requests per second
    58479.53 requests per second
    

    에 다시 한번 키를 변경 "ipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumlorem : 1234567890"이 있습니다 :

    58479.53 requests per second
    58139.53 requests per second
    56179.77 requests per second
    

    그래서도 정말 정말 긴 키 레디 스의 속도에 큰 영향이 없습니다. 그리고 이것은, GET에 O (1) 연산입니다. 더 복잡한 작업에도 덜 민감이하는 것입니다.

    나는 명확하게 개최 값 것을 식별 키를 가진 것은 크게 당신이 단축 키의 나갈 것 어떤 소문자 속도의 성능을 능가한다고 생각합니다.

    , 당신은 단지 크기를 증가시킬 수이 더 걸릴 원하는 경우 -r은 [keyspacelen] 매개 변수는 ( ': 랜드를'그들만큼 그들이 가지고있는) 임의의 키를 생성 할 수있는 레디 스 벤치 마크 유틸리티에 대한도있다 당신이 원하는 무엇이든 길이에 테스트 코드에서 접두사.

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

    2.레디 스 메모리에 모든 키를 누르고 좋아한다. 더 이상 평균 키 길이는 더 적은 메모리에 저장 될 수있다. 그래서 그래, 키 길이는 크게 성능에 영향을하지만, 아마 상당히 방법으로 당신은 우려하고 있습니다. 즉 작은 KEYSPACE으로, (예를 들어 하나 쉽게 메모리에 끼워 해당) 128 바이트 키와 16 바이트 키 다르게 극적 행하지 않는다.

    레디 스 메모리에 모든 키를 누르고 좋아한다. 더 이상 평균 키 길이는 더 적은 메모리에 저장 될 수있다. 그래서 그래, 키 길이는 크게 성능에 영향을하지만, 아마 상당히 방법으로 당신은 우려하고 있습니다. 즉 작은 KEYSPACE으로, (예를 들어 하나 쉽게 메모리에 끼워 해당) 128 바이트 키와 16 바이트 키 다르게 극적 행하지 않는다.

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

    3.나는 어떤 확실성이 질문에 대답 할 수 없다. 그러나, 나는 그것에 대해 몇 가지 질문을 몇 가지 관찰을 제공 할 수 있습니다.

    나는 어떤 확실성이 질문에 대답 할 수 없다. 그러나, 나는 그것에 대해 몇 가지 질문을 몇 가지 관찰을 제공 할 수 있습니다.

    나는 그들이 모두에서 사용할 수있는 경우 매우 긴 키 (이름) 및 / 또는 값이 전체 성능의 성능에 영향을 줄 것이 분명하다 생각합니다. 이러한 영향은 네트워크를 통해, 또는 서버에서 클라이언트에있을 수 있습니다. 의 첫 번째 질문은 밖으로 끌어 그래서 당신은 다음과 같습니다

    얼마나 키와 값 레디 스와 고객 사이에있을 수 있습니까?

  4. ==============================

    4.나는 어떤 변수가 멀리 최대 이름 길이를 초과하지 않는만큼 그 데이터 타입에 대해 수행하므로 변수는 같은 장소를 취할 것입니다, 변수 이름의 길이가 성능에 영향을 미칠 것이라고 생각하지 않습니다.

    나는 어떤 변수가 멀리 최대 이름 길이를 초과하지 않는만큼 그 데이터 타입에 대해 수행하므로 변수는 같은 장소를 취할 것입니다, 변수 이름의 길이가 성능에 영향을 미칠 것이라고 생각하지 않습니다.

  5. from https://stackoverflow.com/questions/6320739/does-name-length-impact-performance-in-redis by cc-by-sa and MIT license