ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [공식 문서 훑어보기] 4. Redis 기초 실무 팁
    Redis 2025. 4. 29. 22:18
    728x90
    반응형

    Redis의 Primary(마스터)와 Replica(슬레이브) 구조에서는 성능 최적화를 위해 여러 가지 옵션을 설정할 수 있습니다.

    일반적으로 Primary 서버에서는 I/O 작업을 최소화하고 Replica 서버에서 주기적으로 RDB 스냅샷을 저장하는 것이 성능을 높이는 방법으로 공식문서에서도 권장합니다.

    1. Primary 서버 성능 최적화

    Primary 서버는 RDB나 AOF를 비활성화하고 appendonly와 persistence 옵션을 꺼서 I/O 작업을 최소화할 수 있습니다.

    ※ 하지만 해당 내용은 테스트 결과 항상 그렇다고 볼 수 없습니다.

    2. Replica 서버 역할

    Replica 서버는 Primary에서 발생하는 모든 변경 사항을 복제하여 성능 부하를 줄이고 데이터를 안전하게 보존합니다.

    Primary 서버의 데이터를 Full Sync 방식으로 Replica 서버에 전달하며 그 후 변경 사항은 backlog를 통해 실시간으로 전달됩니다.

    3. 디스크리스(Diskless) 상태 성능

    디스크를 사용하지 않고 네트워크를 통해 데이터를 복제함으로써, 디스크 쓰기 작업에 의한 성능 저하를 방지할 수 있습니다.

    4. Redis Replication 시 복제되는 데이터

    Primary 서버는 Persistence 옵션을 끄고 디스크리스 상태일 때 데이터를 복제한다고 가정 할때 RDB 스냅샷을 만들어 복제 시점에 데이터를 저장하지 않고 네트워크를 통해 Replica 서버로 보내 Full Sync를 진행합니다.

    이후에는 Primary에서 발생하는 쓰기 작업은 backlog를 통해 실시간으로 Replica 서버에 전달되며 Replica 서버는 backlog를 통해 AOF를 만들 수 있습니다.

    5. Redis 성능 테스트 (redis-benchmark)

    Redis의 성능을 redis-benchmark 명령어를 사용하여 테스트했습니다.

    아래는 AOF 및 RDB 활성화 상태와 AOF 및 RDB 비활성화 상태에서의 성능 비교입니다.

     

    테스트 명령어

    docker run --rm --network host redis redis-benchmark -h 127.0.0.1 -p 6379 -n 1000000 -c 1000 -t set,get,hset,hget,lpush,lpop,sadd,srem,zadd,zrange -P 10

    AOF, RDB 활성화 상태

    ※ 아래 시간 단위는 ms 입니다.

    자료 구조 처리량
    (요청 / 초)
    평균 지연 최소 지연 50% 지연 95% 지연 99% 지연 최대 지연
    SET 499,750.16 18.31 7.87 17.12 28.03 34.75 54.08
    GET 589,622.62 12.74 3.92 12.10 20.72 27.97 37.34
    LPUSH 280,583.62 32.84 7.85 29.81 59.20 75.97 109.06
    LPOP 428,265.53 21.51 8.14 20.69 30.77 36.99 50.56
    SADD 657,894.75 12.41 0.93 12.13 19.18 23.17 33.15
    HSET 283,607.50 32.72 8.92 27.86 65.92 94.85 148.10
    ZADD 403,714.16 21.87 7.56 20.74 34.24 43.33 57.25

    AOF, RDB 비활성화 상태

    ※ 아래 시간 단위는 ms 입니다.

    자료 구조 처리량
    (요청 / 초)
    평균 지연 최소 지연 50% 지연 95% 지연 99% 지연 최대 지연
    SET 641,848.56 13.32 3.82 12.85 20.43 25.33 37.06
    GET 690,131.12 11.61 4.10 11.38 17.73 21.65 33.12
    LPUSH 672,043.00 13.14 1.17 12.67 18.11 21.07 26.82
    LPOP 608,642.75 14.76 5.43 14.28 20.50 23.60 30.56
    SADD 720,461.06 10.84 2.70 10.75 16.06 18.85 25.20
    HSET 604,594.88 14.48 6.01 13.93 20.59 23.94 32.86
    ZADD 583,430.56 15.40 4.96 14.74 21.76 24.91 35.87

    결론

    일반적으로 Redis의 Primary 서버에서는 AOF 및 RDB와 같은 디스크 기반 Persistence 기능을 비활성화하는 것이 성능 향상에 긍정적인 영향을 줄 수 있습니다. 실제 테스트에서도 이러한 경향이 일부 확인되었습니다.

     Redis 성능 최적화는 단순히 설정 하나만 변경한다고 해서 보편적인 성능 향상을 보장하지 않으며 실제 서비스 환경에 맞는 테스트 기반의 설정 튜닝이 반드시 선행되어야 합니다.

    728x90
    반응형
Designed by Tistory.