lifecarelog
백엔드

Upstash Redis 무료 플랜 DB 1개, prefix로 나눠 쓰는 법

Upstash Redis 무료 플랜은 DB가 1개예요. 여러 서비스가 키 prefix 규칙 하나로 한 Redis를 안전하게 나눠 쓰는 방법을 정리했어요.

4분 읽기

혼자 여러 서비스를 운영하다 보면 캐시, 세션, 요청 카운터처럼 Redis가 필요한 자리가 계속 생겨요. 그런데 Upstash Redis 무료 플랜은 DB가 1개뿐이라 서비스마다 인스턴스를 따로 만들 수 없어요. 혹시 "서비스 하나당 Redis 하나"가 당연하다고 생각하고 계셨나요?

논리 DB 대신 키 이름으로 나눠요

셀프호스트 Redis에서 쓰던 논리 DB 전환은 무료 관리형 환경에서는 기대하기 어려워요. 대신 키 이름 앞에 서비스 구분자를 붙이는 규칙 하나면 충분해요.

라이프케어로그도 이렇게 쓰고 있어요. 서비스, 용도, 식별자 세 조각을 콜론으로 잇는 방식이에요.

planl:quota:2026-08:user123
planc:cache:loan-calc

플랜엘(plan-l)은 법령·판례 검색이 월 3건 무료라서, 이 카운트를 위 첫 번째 키에 INCR로 쌓아요. 키에 연월을 박아두고 돌려 보니 관리가 단순해졌어요. 다음 달이 되면 새 키가 생기니, 이전 키는 40일 TTL로 알아서 사라지게 두면 끝이에요.

prefix는 문서가 아니라 코드로 강제해요

직접 운영해 보니 규칙을 문서로만 정해두면 언젠가 prefix 없는 키가 섞여요. ioredis라면 클라이언트 생성 시 옵션 한 줄로 모든 명령에 자동으로 붙일 수 있어요.

const redis = new Redis(url, { keyPrefix: "planl:" });

이렇게 적용해 봤더니 애플리케이션 코드에서는 prefix를 잊어도 안전해졌어요. 한 가지 주의할 점은 SCAN의 MATCH 패턴에는 자동으로 붙지 않아서, 키를 훑을 때는 패턴에 직접 써줘야 한다는 거예요.

  • prefix 코드로 강제
  • 모든 키에 TTL
  • FLUSHALL 금지

나눠 쓸 때 지킬 것

메모리 한 덩어리를 같이 쓰는 구조라, 만료 없는 키가 쌓이면 모든 서비스가 피해를 봐요. 캐시성 키는 60초에서 1시간 사이 TTL을 기본으로 두는 편이에요.

FLUSHALL은 절대 쓰면 안 돼요. 내 서비스만 비운다는 게 전체 데이터를 날려요. 정리가 필요하면 SCAN으로 planc:* 같은 패턴만 골라 지워야 해요. 테스트해 보면 COUNT 100 정도로 나눠 도는 방식이 무난했어요.

무료 한도의 명령 수도 서비스들이 나눠 쓴다는 점도 기억해 두세요. 폴링처럼 호출이 잦은 패턴 하나가 다른 서비스 몫까지 소진할 수 있어요.

인프라를 늘리기 전에 이름 규칙부터 정리해 보세요. 작은 도구 여러 개를 굴리는 입장에서는, 잘 정한 prefix 하나가 Redis 인스턴스 하나보다 오래갑니다.

#Upstash#Redis#백엔드

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.