목록 보기
유저 목록을 Redis Bitmap 구조로 저장하여 메모리 절약하기
백엔드

유저 목록을 Redis Bitmap 구조로 저장하여 메모리 절약하기

리멤버
리멤버
2025년 1월 13일

두줄요약

Redis SET에 저장하던 설문 대상 유저 목록을 Bitmap으로 바꿔 메모리를 크게 절감한 사례를 다뤘습니다. 조회는 상수 시간으로 유지하면서도 대규모 타겟팅에서의 Redis 부담을 줄였습니다.

문제 상황

  • 설문 대상 유저 ID 목록을 Redis SET으로 저장하자 메모리 사용량이 과도하게 증가하는 문제
  • 수만~수백만 단위 유저를 대상으로 하면 설문 수가 늘수록 Redis 메모리 부담이 기가바이트 단위로 커질 우려

해결 방법

  • 유저 ID를 Bit 오프셋으로 매핑해 Redis Bitmap으로 참여 대상 여부 저장
  • 조회는 GETBIT으로 처리해 SISMEMBER와 같은 상수 시간 성능을 유지
  • 대상 유저가 적은 경우에는 SET이 더 유리할 수 있어 사용 범위 구분 필요

주의할 점

  • Bitmap은 큰 오프셋에 비해 저장 대상 수가 적으면 오히려 메모리가 비효율적일 수 있음
  • Bit 값이 1인 전체 유저 ID 조회는 Redis 기본 명령만으로 불가해 Lua Scripting이 필요

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...