IBM Cloud Docs
모범 사례 Databases for Redis

모범 사례 Databases for Redis

Databases for Redis를 사용 중인 경우 권장되는 다음 우수 사례를 검토하십시오.

Databases for Redis의 개념

Databases for Redis 는 IBM Cloud에서 제공되는 관리 Redis OSS 서비스입니다. 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 인메모리 데이터 구조 저장소 입니다. 디스크에 데이터를 저장하는 기존 데이터베이스와 달리 Redis 는 메모리 (RAM) 에 데이터를 저장하므로 대기 시간이 짧습니다. 데이터는 _임시_이며, 이를 통해 Databases for Redis 가 최고 성능 및 높은 처리량을 제공할 수 있습니다. RBD 스냅샷과 AOF (파일에만 추가) 동기화를 사용하여 수행할 수 있으므로 데이터 가용성과 성능을 교환하여 디스크에 데이터를 지속적으로 저장하도록 Redis 를 구성할 수도 있습니다.

지속성이 사용 불가능한 경우에도 백업 및 고가용성에 대해 RBD 스냅샷을 사용할 수 있습니다.

인스턴스 용량 계획의 우수 사례

애플리케이션 및 아키텍처 디자인을 기반으로 Databases for Redis 인스턴스 용량을 계획하고, 하드웨어 요구사항을 이해하고, 수요 증가 또는 감소에 대비해야 합니다. 다음 권장사항은 인스턴스 크기를 최적화하는 데 도움이 될 수 있습니다.

데이터 이해
데이터의 데이터 유형, 크기 및 수명을 알고 있어야 합니다. 이는 데이터가 삭제되거나 이동되기 전에 사용 가능한 인메모리 데이터의 지속 기간을 이해하는 데 도움이 됩니다.
메모리 요구사항 추정
메모리 요구사항을 계산하는 것이 중요합니다. 데이터뿐만 아니라 복제, 클라이언트 연결, 최대 메모리 버퍼 및 Redis 메타데이터에 필요한 메모리도 고려해야 합니다.
읽기/쓰기 로드 이해
읽기/쓰기 로드를 식별하면 Auto-Scaling 요구사항을 준비하고 애플리케이션이 요청하는 시간을 확보하며 master-follower 동기화를 유지하는 데 도움이 됩니다.
IOPS 요구사항 이해
초당 입/출력 (I/O) 조작은 인스턴스 용량 계획에서 고려해야 하는 주요 요소입니다. Databases for Redis 는 인스턴스가 캐시를 위해 설정된 경우에도 디스크를 사용하는 기본 Redis 구성을 유지하면서 주기적으로 RDB 스냅샷을 작성합니다. 매우 바쁜 데이터베이스의 경우 디스크 크기에 대한 IOPS를 초과할 수 있으며, 디스크 크기를 늘리면 성능 병목 현상을 완화할 수 있습니다.
중복성 및 다시 연결 계획
클라우드 계산과 관련된 여러 컴포넌트가 있으며 이로 인해 일시적인 장애가 발생할 수 있습니다. 그러나 IBM® Cloud Databases에서는 99.99%의 고가용성을 제공하며 재시도 및 다시 연결 로직을 사용하여 애플리케이션 디자인에서 연결 해제를 계획하도록 권장합니다.
네트워크 대역폭 고려
네트워크 대역폭은 Databases for Redis 성능에 상당한 영향을 줄 수 있습니다. 데이터베이스 로드를 처리하기에 충분한 네트워크 대역폭이 있는지 확인하십시오.
모니터링 및 조정
Databases for Redis IBM Cloud® Monitoring 를 사용하여 데이터베이스 인스턴스의 성능과 사용량을 모니터링하고, 데이터베이스 인스턴스의 사용 패턴을 파악하여 필요에 따라 크기를 조정하는 것이 좋습니다.

성능 우수 사례

지속성 사용 안함
기본적으로 Databases for Redis 에는 지속성이 사용 가능합니다. 이는 AOF 동기화를 기록하고 IOPS 로드를 증가시킵니다. 애플리케이션이 데이터를 지속할 필요가 없는 경우 Set appendonly = no 명령을 사용하여 이를 사용 안함으로 설정하십시오. 자세한 정보는 다음을 참조하십시오.
예제 캐시 설정하기.
RAM대 코어
Redis 는 단일 스레드 인메모리 데이터베이스입니다. 본질적으로 다른 지속적 데이터베이스와 달리 CORES보다 더 많은 RAM이 필요합니다. 단일 스레드인 경우에도 '멀티플렉싱' 을 사용하여 요청을 처리하지만 모든 요청은 스레드에 의해 처리됩니다. 그러나 내부 프로세스에 대한 데이터베이스 무결성 및 안정성을 유지하려면 다른 코어가 필요합니다. Databases for Redis의 RAM및 디스크 (IOPS의 경우) 에 더 집중하는 것이 좋습니다. 자세한 정보는 인스턴스 용량 계획의 우수 사례 를 참조하십시오.
메모리 크기 조정
Databases for Redis 인스턴스의 메모리를 줄일 때 주의하는 것이 좋습니다. Redis 는 인메모리 데이터베이스이므로 해당 메모리는 저장, 처리 및 검색을 위해 데이터를 보유합니다. 조작을 완료하는 데 사용 가능한 공간이 충분하지 않기 때문에 메모리를 크게 줄이면 인스턴스가 일시적으로 오류를 리턴하는 것을 중지할 수 있습니다. 예를 들어, 15GB의 메모리에 20GB의 데이터를 로드하려고 시도하는 경우 이 케이스는 오류를 리턴하도록 바인드됩니다.
비용이 많이 드는 명령 금지
Redis 의 특정 명령은 실행하는 데 비용이 많이 듭니다. 예를 들어, 자주 사용되지만 피해야 하는 KEYS 명령입니다. 대신, 반복을 여러 호출에 분산시키고 한 번에 전체 서버를 묶지 않는 SCAN 명령을 사용하십시오.
제거 정책 선택
애플리케이션에 대해 작동하는 제거 정책을 선택해야 합니다. 기본적으로 배치는 noeviction 정책을 사용하여 구성됩니다. 퇴거 정책은 allkeys-lru, volatile-lru, allkeys-random, volatile-random, volatile-ttl 같이 사용하세요. 자세한 내용은 메모리 정책을 참조하세요.
maxmemory값 설정
maxmemory 값을 조정할 수 있습니다. 그러나 적절한 한계를 설정하십시오. 그렇지 않으면 데이터가 사용 가능한 모든 메모리를 사용할 수 있으며 배치에 자원이 부족할 수 있습니다. 기본적으로 데이터 노드의 사용 가능한 메모리의 80%로 설정합니다.
TTL (Time-To-Live) 정책 설정
TTL은 정의된 시간 후에 데이터베이스에서 키가 삭제되는 훌륭한 기능입니다. 이는 Redis 캐시를 사용하는 경우 매우 유용합니다. 그러나 매우 짧은 값은 값의 재계산을 작성할 수 있고 매우 긴 값은 불필요한 메모리 사용을 작성할 수 있으므로 매우 짧은 값 또는 매우 긴 값을 설정하는 데 주의하십시오. 자세한 내용은 TTL 명령을 참조하세요.

가용성 향상을 위한 모범 사례

재시도 및 다시 연결 로직
시스템은 중단되기 쉽습니다. 중단을 방지하기 위해 재시도 및 다시 연결 로직을 애플리케이션 아키텍처에 구현하는 것이 좋습니다. IOREDIS, NODEREDIS 또는 선택한 다른 패키지를 사용하여 애플리케이션의 연속성을 보장하십시오.

자세한 내용은 Redis 사용한 오류 감지 및 처리 블로그 게시물을 참조하세요.

모니터링 우수 사례

LogDNA 에서 다음과 같은 공통 오류를 모니터하고 정정 조치를 취해야 합니다.

일반 우수 사례

연결 풀링
연결을 작성하거나 닫는 데는 비용이 많이 듭니다. 연결을 효율적으로 관리하는 것이 중요하며 연결 풀링은 연결 열기 및 닫기와 연관된 오버헤드를 최소화하는 데 도움이 됩니다. 자세한 내용은 연결 풀링을 참고하세요.
연결 한계
연결을 효율적으로 활용합니다. Databases for Redis 에 너무 많은 연결을 과부하시키면 오류가 발생하고 응용 프로그램이 중단될 수 있습니다. 많은 연결이 데이터베이스의 상태 및 무결성을 유지보수하기 위해 내부적으로 예약되어 있으므로 일부 연결을 사용 가능한 상태로 두십시오. 연결 풀링을 사용하는 것이 좋습니다. 자세한 내용은 연결 제한을 참고하세요.
연결 제한시간
연결에 적절한 제한시간 값을 설정하는 것도 자원이 무한정 묶이지 않도록 하는 데 중요합니다. 그러나 짧은 제한시간을 설정하면 연결 이탈이 발생하고 대기 시간이 증가할 수 있으므로 주의하십시오. 애플리케이션의 운영 기대치에 맞게 제한시간을 조정하십시오.
Redis 파이프라인 기능 사용
Redis 파이프라이닝은 각 개별 명령에 대한 응답을 기다리지 않고 한 번에 여러 명령을 실행하여 성능을 향상시키는 기술입니다. 자세한 정보는 Redis pipelining 을 참조하십시오.
Redis Streams 기능 사용
Redis Streams는 추가 전용 로그의 매우 빠른 인메모리 추상을 제공하는 데이터 유형입니다.
큰 데이터 분할
대형 데이터 세트를 더 많은 키가 있는 더 작은 청크로 분할하는 것이 좋습니다. 즉, 데이터를 여러 키로 분할하는 것이 좋습니다.
배치 스케줄
Databases for Redis 는 매일 스케줄된 시간에 자동화된 백업을 작성하도록 스케줄됩니다. 이 시간 동안 데이터베이스 IOPS가 활용됩니다. 지금은 사용자 고유의 일괄처리 작업을 실행하지 않는 것이 좋습니다.
알림 채널 설정
Databases for Redis 는 IBM 계정에서 이메일 ID를 설정하여 버전 변경, 수명 종료 또는 유지보수 스케줄에 대한 정기적인 업데이트를 수신하는 것이 좋습니다. IBM 계정 알림 아이콘을 모니터하여 이러한 업데이트를 수신할 수도 있습니다.

자세한 내용은 IBM Cloud 블로그 게시물에서 Redis 모범 사례를 참조하세요.