> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baeum.ai.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# Redis

데이터를 디스크가 아닌 **메모리(RAM)에 저장**하는 데이터 스토어입니다. 메모리에 저장하기 때문에 읽기/쓰기 속도가 매우 빠릅니다.

## 어디에 쓰이나요?

* **캐시**: 자주 조회하는 데이터를 메모리에 저장하여 응답 속도 향상
* **세션 저장소**: 로그인 상태, 사용자 세션 정보를 저장
* **메시지 큐**: 서비스 간 비동기 메시지 전달 (작업 대기열)
* **실시간 데이터**: 실시간 랭킹, 카운터, 속도 제한(Rate Limiting) 등

PostgreSQL 같은 디스크 기반 DB와 함께 사용되는 경우가 많습니다. 예를 들어, 자주 바뀌지 않는 데이터는 PostgreSQL에 저장하고 자주 조회하는 데이터는 Redis에 캐싱하여 성능을 높이는 방식입니다.

## Docker Compose

```yaml docker-compose.yml theme={null}
services:
  redis:
    image: redis:7-alpine
    container_name: redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    command: redis-server --requirepass changeme
    volumes:
      - redis_data:/data

volumes:
  redis_data:
```

## 실행

```bash theme={null}
docker compose up -d
```

## 접속 확인

```bash theme={null}
docker exec -it redis redis-cli -a changeme
```

접속 후 동작을 확인합니다.

```bash theme={null}
127.0.0.1:6379> ping
PONG
```

## 기본 정보

| 항목        | 값              |
| --------- | -------------- |
| 포트        | 6379           |
| 비밀번호      | changeme       |
| 데이터 저장 경로 | redis\_data 볼륨 |

## 주요 설정 옵션

`command` 항목에 Redis 서버 옵션을 추가할 수 있습니다.

```yaml theme={null}
command: redis-server --requirepass changeme --maxmemory 256mb --maxmemory-policy allkeys-lru
```

| 옵션                   | 설명                                        |
| -------------------- | ----------------------------------------- |
| `--requirepass`      | 접속 비밀번호                                   |
| `--maxmemory`        | 최대 메모리 사용량                                |
| `--maxmemory-policy` | 메모리 초과 시 정책 (allkeys-lru, volatile-lru 등) |
| `--appendonly yes`   | AOF 영속성 활성화                               |

## 라이선스

| 구분     | 내용                                                   |
| ------ | ---------------------------------------------------- |
| 라이선스   | RSALv2 / SSPL 듀얼 (Redis 7.4+), BSD 3-Clause (7.2 이하) |
| 개인 사용  | 자유롭게 사용 가능                                           |
| 상업적 사용 | 사내 사용은 자유, Redis를 관리형 서비스(DBaaS)로 제공하는 것은 불가         |

<Note>
  Redis 7.4부터 라이선스가 변경되었습니다. 사내 캐시, 세션 저장소 등 내부 용도로 사용하는 것은 제한이 없습니다. 제한되는 것은 Redis 자체를 상품화하여 클라우드 서비스로 판매하는 경우입니다.
</Note>

## 참고

* [Docker Hub - redis](https://hub.docker.com/_/redis)
* [Redis 공식 문서](https://redis.io/docs/)

## 설치 점검 목록

* `docker compose up -d` 후 `docker compose ps`로 컨테이너 상태를 확인했습니다.
* 기본 포트/계정/비밀번호를 문서대로 점검했습니다.
* 운영용으로 사용할 때 기본 비밀번호/시크릿 값을 변경했습니다.
* 장애 분석을 위해 `docker compose logs -f` 확인 방법을 숙지했습니다.

## 문제 해결 가이드

* 컨테이너가 실행되지 않으면 `docker compose logs -f`로 오류 원인을 먼저 확인합니다.
* 포트 충돌이 나면 기존 프로세스를 종료하거나 포트 매핑 값을 변경합니다.
* 이미지 pull 실패 시 네트워크 연결 및 레지스트리 접근 권한을 확인합니다.
* 설정 변경 후 문제가 지속되면 `docker compose down` 후 다시 `up -d`로 재기동합니다.

## 관련 문서

<CardGroup cols={2}>
  <Card title="Setup 홈" icon="house" href="/setup/index">
    운영체제별 설치 흐름을 다시 확인합니다.
  </Card>

  <Card title="다음: OpenSearch" icon="arrow-right" href="/stacks/opensearch">
    다음 설치 단계를 이어서 진행합니다.
  </Card>
</CardGroup>
