13P by lemonmint 27일전 | favorite | 댓글 1개

레디스는 빠르지만, 잦은 데이터 조회는 API 서버에 부담을 줍니다. 특히 실시간 데이터처럼 갱신은 불규칙하지만 자주 조회해야 하는 경우, 효율적인 캐시 전략이 필요합니다.

  • 문제점: Redis PubSub이나 Keyspace Notification은 갱신 감지 및 메시지 처리 로직이 복잡하거나 리소스 낭비를 유발할 수 있습니다.

  • 해결책: Redis 6.0부터 지원하는 Invalidation Message는 서버가 클라이언트 캐시를 관리하는 방식입니다.

    • 클라이언트가 키를 읽은 후 다른 클라이언트가 변경하면, Redis가 갱신 메시지를 보내 캐시를 삭제하도록 합니다.
  • 구현: Go 언어에서 redigo+ristretto 조합 또는 rueidis 라이브러리를 사용하여 Invalidation Message를 적용할 수 있습니다.

    • redigo+ristretto는 커스텀 로직이 필요하지만, rueidis는 DoCache 함수로 간단하게 구현 가능합니다.
  • 결과: 실제 적용 결과, API 응답 속도가 최대 82% 개선되었으며, Redis 서버 부담도 감소했습니다. 클라이언트 사이드 캐시 관리는 필요하지만, 성능 향상 효과가 큽니다.