/ 디렉터리 / 플레이그라운드 / Redis
● 공식 redis 🔑 본인 키 필요

Redis

제작: redis · redis/mcp-redis

Redis와 영어로 대화하기 — 키를 검사하고, 캐시를 관리하고, 만료 시간을 조정하고, Redis 명령어를 외우지 않고도 pub/sub을 디버깅합니다.

Redis의 공식 MCP는 타입화된 도구를 통해 전체 Redis 명령어 표면을 노출합니다: 문자열, 해시, 리스트, 세트, 정렬된 세트, 스트림, pub/sub, 키 관리. 단일 Redis URL을 기본값으로 사용하며, OSS Redis, Redis Stack, Redis Cloud, AWS ElastiCache/MemoryDB와 호환됩니다.

왜 쓰나요

핵심 기능

라이브 데모

실제 사용 모습

redis.replay ▶ 준비됨
0/0

설치

클라이언트 선택

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "redis": {
      "command": "uvx",
      "args": [
        "mcp-redis"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config 열기. 저장 후 앱 재시작.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "redis": {
      "command": "uvx",
      "args": [
        "mcp-redis"
      ]
    }
  }
}

Cursor는 Claude Desktop과 동일한 mcpServers 스키마 사용. 프로젝트 설정이 전역보다 우선.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "redis": {
      "command": "uvx",
      "args": [
        "mcp-redis"
      ]
    }
  }
}

Cline 사이드바의 MCP Servers 아이콘 클릭 후 "Edit Configuration" 선택.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "redis": {
      "command": "uvx",
      "args": [
        "mcp-redis"
      ]
    }
  }
}

Claude Desktop과 같은 형식. Windsurf 재시작 후 적용.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "redis",
      "command": "uvx",
      "args": [
        "mcp-redis"
      ]
    }
  ]
}

Continue는 맵이 아닌 서버 오브젝트 배열 사용.

~/.config/zed/settings.json
{
  "context_servers": {
    "redis": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-redis"
        ]
      }
    }
  }
}

context_servers에 추가. 저장 시 Zed가 핫 리로드.

claude mcp add redis -- uvx mcp-redis

한 줄 명령. claude mcp list로 확인, claude mcp remove로 제거.

사용 사례

실전 활용법: Redis

캐시된 값이 오래되었거나 누락된 이유 조사

👤 캐시 버그를 디버깅하는 백엔드 엔지니어 ⏱ ~10 min beginner

언제 쓸까: 사용자가 '프로필을 업데이트했는데 여전히 이전 이름이 표시됨'이라고 말하는 경우 — 캐시 무효화 문제일 가능성이 높습니다.

사전 조건
  • 최소한 읽기 액세스 권한이 있는 Redis URLREDIS_URL=redis://:pw@host:6379/0
흐름
  1. 올바른 키 찾기
    user:profile:42*과 일치하는 키를 스캔합니다 — 각 키의 타입과 TTL을 표시합니다.✓ 복사됨
    → 일치하는 키 목록
  2. 저장된 값과 만료 시간 검사
    user:profile:42에 대해 값을 GET하고 TTL을 표시합니다. 오래되었거나 예상과 다릅니까?✓ 복사됨
    → 값 + TTL + 판단 결과
  3. 의도적으로 캐시 무효화
    해당 키(및 관련된 모든 리스트/세트 키)를 삭제하여 다음 읽기 시 앱이 재채우도록 합니다. 삭제를 확인합니다.✓ 복사됨
    → DEL이 1 이상 반환됨

결과: 확인된 고정 캐시와 무엇이 오래되었고 왜 그런지에 대한 기록

함정
  • 대용량 인스턴스에서 KEYS *를 사용하면 서버가 정지됨 — 항상 SCAN을 사용하세요 (서버가 scan 도구를 논블로킹 커서로 변환함); KEYS를 사용하지 마세요

남용 패턴에 대한 속도 제한 카운터 감시

👤 플랫폼 / 남용 팀 ⏱ ~15 min intermediate

언제 쓸까: 클라이언트가 속도 제한기에 대해 버스트하고 있다고 의심하는 경우; 실시간 카운터와 TTL을 확인하고 싶습니다.

흐름
  1. 활성 카운터 나열
    ratelimit:*과 일치하는 키를 스캔하고 접두사별로 그룹화합니다. 그룹당 개수를 표시합니다.✓ 복사됨
    → 접두사 히스토그램
  2. 상위 소비자 찾기
    ratelimit:api:*에 대해 가장 높은 정수 값을 가진 20개의 키를 반환합니다.✓ 복사됨
    → 상위 20개 위반자
  3. 차단 또는 재설정
    남용 키 ratelimit:api:client_abc를 삭제하여 다음 호출이 실패하도록 하고, client_abc를 EXPIRE 86400과 함께 차단 목록 세트 abuse:blocked에 추가합니다.✓ 복사됨
    → 키 삭제 + 차단 목록 업데이트됨

결과: 남용의 실시간 증거 및 표적화된 완화, 모두 몇 가지 Redis 작업으로 수행됨

함정
  • 속도 제한 키를 삭제하면 클라이언트가 즉시 다시 버스트할 수 있음 — 먼저 차단 목록 세트에 추가한 다음 카운터를 삭제하세요 — 반대 순서가 아니라
함께 쓰기: sentry

메모리를 소비하는 고아 세션 키 찾기 및 제거

👤 Redis 메모리 경고에 대응하는 SRE ⏱ ~20 min intermediate

언제 쓸까: Redis가 85% maxmemory에 있고 중요한 키를 제거하기 전에 무엇이 채우고 있는지 알아야 합니다.

흐름
  1. 큰 키 샘플링
    메모리 기준으로 50개의 가장 큰 키를 찾습니다(SCAN 전달을 통해 샘플링된 각 키에 대해 MEMORY USAGE 사용).✓ 복사됨
    → 크기가 있는 가장 큰 키 목록
  2. 접두사별로 그룹화하고 합산
    해당 샘플에서 첫 번째 콜론 세그먼트로 키를 그룹화합니다. 그룹당 크기를 합산하여 최악의 접두사를 찾습니다.✓ 복사됨
    → 접두사 → 전체 바이트
  3. TTL 수정으로 정리
    TTL이 없는 (영구적인) session: 접두사 키에 대해 EXPIRE를 86400초로 설정합니다. 몇 개가 업데이트되었는지 세십시오.✓ 복사됨
    → TTL이 주어진 키의 개수

결과: 메모리 완화 및 앱 코드에서 수정할 근본 원인(세션 쓰기에서 누락된 EXPIRE)

함정
  • MEMORY USAGE는 큰 해시/정렬된 세트에서 비쌈 — 전체 키스페이스가 아닌 SCAN을 통해 5-10k개의 키를 샘플링합니다
함께 쓰기: sentry

중단된 컨슈머 그룹 항목에 대한 Redis 스트림 검사

👤 작업 큐에 Redis 스트림을 사용하는 엔지니어 ⏱ ~20 min advanced

언제 쓸까: 컨슈머 그룹이 지연되고 있습니다. 메시지가 ack되지 않고 처리량이 급감했습니다.

흐름
  1. 스트림 및 그룹 확인
    스트림 jobs에 대해 XLEN, 컨슈머 그룹, 그룹당 대기 중인 개수를 표시합니다.✓ 복사됨
    → 백로그 수치
  2. 대기 중인 항목 확인
    그룹 workers에 대해 상위 20개 PEL 항목(XPENDING)을 나열하고 유휴 시간과 컨슈머를 표시합니다.✓ 복사됨
    → 중단된 메시지 ID
  3. 재청구 또는 삭제
    중단된 항목을 새로운 컨슈머로 XCLAIM(idle>300000); 또는 삭제해도 안전하면 XACK합니다. 실행 전에 어느 것인지 확인하세요.✓ 복사됨
    → 재청구/ack 요약

결과: 배치당 문서화된 작업(청구 vs ack)과 함께 차단 해제된 스트림

함정
  • 메시지를 검사하지 않고 XACK을 수행하면 작업이 자동으로 삭제될 수 있음 — 항상 메시지 본문(XRANGE)을 가져오고 XACK 전에 삭제해도 안전한지 확인하세요

Redis 해시에 저장된 기능 플래그 롤아웃 디버그

👤 Redis 기반 플래그를 사용하는 플랫폼 팀 ⏱ ~10 min beginner

언제 쓸까: 플래그가 사용자의 부분 집합에 대해 예상대로 작동하지 않는 경우

흐름
  1. 플래그 해시 검사
    HGETALL flags:new-checkout. 모든 필드와 값을 표시합니다.✓ 복사됨
    → 플래그 정의
  2. 오버라이드 세트 확인
    SMEMBERS flags:new-checkout:allowlistflags:new-checkout:blocklist. 사용자 42가 어디에든 있습니까?✓ 복사됨
    → 멤버십 답변
  3. 수정 및 확인
    SADD 사용자 42를 허용 목록에 추가합니다. HGETALL을 다시 읽어 플래그 상태가 그 외에 변경되지 않았는지 확인합니다.✓ 복사됨
    → 허용 목록 업데이트됨; 다른 필드는 동일함

결과: 플래그가 의도된 상태와 일치하며 확인된 변경 기록이 있습니다.

함정
  • 조정 없이 플래그 키에 쓰면 다른 관리자의 진행 중인 테스트가 깨짐 — 쓰기 전에 #platform에서 알리세요; 더 나은 방법은 변경 사항을 기록하는 관리 UI를 사용하세요
함께 쓰기: sentry

조합

다른 MCP와 조합해 10배 효율

redis + sentry

캐시 키를 이를 참조한 Sentry 에러와 상관관계 지음

Sentry 이벤트가 캐시 키 user:profile:42를 누락된 것으로 언급합니다. 키를 GET하고 TTL을 확인하며 제거되었는지 또는 채워진 적이 없는지 확인합니다.✓ 복사됨
redis + postgres

캐시된 개수를 Postgres의 신뢰할 수 있는 소스와 비교

Redis에서 stats:active_users:today를 GET합니다. Postgres에서 SELECT COUNT(*) FROM users WHERE last_seen > ...을 실행합니다. 편차를 보고합니다.✓ 복사됨
redis + filesystem

오프라인 분석을 위해 키의 스냅샷 내보내기

session:*과 일치하는 모든 키를 SCAN하고 키+TTL+크기를 /tmp/session-audit.jsonl로 덤프합니다.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
scan pattern: str, count?: int 패턴으로 키를 발견합니다(항상, KEYS를 사용하지 마세요) free
type key: str 알 수 없는 키에 대해 데이터 타입별 작업을 수행하기 전에 free
get / set / del key, value?, ex? 문자열 작업 — 캐시, 카운터, 잠금 free
hgetall / hset / hdel key, field?, value? 해시로 저장된 구조화된 레코드 free
sadd / smembers / sismember / srem key, member(s) 차단 목록, 허용 목록, 멤버십 free
zadd / zrange / zrangebyscore key, score+member(s) 리더보드, 우선순위 큐 free
xadd / xrange / xread / xpending / xclaim / xack stream ops Redis 스트림의 작업 큐 free
ttl / expire / persist key, seconds? 만료 시간 확인 또는 설정 free
info / memory_usage section? / key 용량 및 성능 검사 free

비용 및 제한

운영 비용

API 쿼터
Redis 초당 명령어 제한으로 제한됨(MCP가 아닌 인스턴스)
호출당 토큰
대부분의 명령어 <200 토큰; HGETALL/LRANGE는 데이터 크기에 따라 확장
금액
기존 Redis에 대해 무료. Redis Cloud 무료 계층 30MB.
항상 현실적인 count를 SCAN에 전달합니다(기본값 10은 대규모에서 느림; 1000은 좋은 배치).

보안

권한, 시크릿, 파급범위

최소 스코프: 읽기 전용 작업을 위한 `~pattern` 및 `+@read`가 있는 ACL 사용자
자격 증명 저장: REDIS_URL(비밀번호 포함)은 환경 변수에 저장; rediss://로 TLS 선호
데이터 외부 송신: Redis 엔드포인트로 직접 TCP; 제3자 프록시 없음
절대 부여 금지: FLUSHALL FLUSHDB CONFIG SET SHUTDOWN

문제 해결

자주 발생하는 오류와 해결

NOAUTH 인증 필요

REDIS_URL에서 비밀번호가 누락되었습니다. redis://:password@host:6379를 사용합니다.

확인: redis-cli -u $REDIS_URL PING
MOVED 1234 other-host:6379 (Redis 클러스터)

Plain MCP는 독립형 클라이언트를 사용합니다. 클러스터 인식 프록시를 지정하거나 비클러스터 Redis 엔드포인트를 사용합니다.

ERR 미지의 명령어 'JSON.GET'

Redis Stack 전용입니다. Redis Stack / Redis Cloud로 업그레이드하거나 해시로 저장합니다.

확인: redis-cli MODULE LIST
OOM 사용 메모리 > 'maxmemory'일 때 명령어 허용 안 됨

Redis가 가득 찼습니다. MEMORY STATS를 확인하고, 인스턴스를 제거 또는 확장한 다음, 향후 쓰기에서 TTL을 설정합니다.

확인: redis-cli INFO memory

대안

Redis 다른 것과 비교

대안언제 쓰나단점/장점
Memcached MCP단순 KV 캐시 요구 사항이 있고 데이터 구조가 필요 없는 경우훨씬 더 작은 표면; 리스트/세트/스트림 없음
DragonflyDB MCPRedis 호환이지만 다중 스레드더 신규; 모든 모듈이 작동하지 않음

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기