개발/알면 좋은

래디스(Redis)

댕주 2025. 3. 25. 23:09

1. Redis는 무엇일까?

Redis(Remote Dictionary Server)는 메모리에 데이터를 저장하는 NoSQL 데이터베이스이다.

보통 DB라고 하면 디스크에 저장하는 걸 떠올리지만, Redis는 데이터를 RAM(메모리)에 저장하기 때문에 속도가 엄청 빠르다.

  • 키(Key)와 값(Value) 형태로 데이터를 저장하는 인메모리 기반의 Key-Value Store
  • 다양한 데이터 타입을 지원 -> 단순 캐시 이상으로 활용 가능

2. 왜 캐시로 Redis를 많이 쓸까?

웹 서비스에서는 DB 요청이 많아지면 속도가 느려지고 서버 부하가 굉장히 심해지기 때문에,

이때 자주 조회되지만 자주 바뀌지 않는 데이터를 Redis에 저장해두면,

웹 서버는 DB가 아닌 Redis에서 빠르게 데이터를 가져올 수 있어서 속도 향상과 부하 분산이 가능하다.

 

예시:

  • 로그인한 회원의 회원 정보
  • 게시판의 상단 고정 공지사항
  • 실시간 인기 검색어

3. 구조적으로 어떻게 작동할까?

[사용자 요청]
     ↓
[웹 서버 (Java, Spring 등)]
     ↓
[Redis에 데이터 있는지 확인]
     ├─✅ 있음 → 바로 응답 (빠름!)
     └─❌ 없음 → DB 조회 → Redis에 저장 → 응답
     
<Cache Aside Pattern>

4. Redis의 주요 데이터 타입

타입 설명 예시
String 가장 기본적인 값 저장 "user:1:name" => "영희"
Hash 필드-값 구조 (JSON과 유사) "user:1" => {name:영희, age:20}
List 순서 있는 리스트 "recent:posts" => [101, 102, 103]
Set 중복  없는 집합 "user:likes" => {23, 45, 67}
Sorted Set 점수 기반 정렬 "ranking" => {영희:100, 철수: 80}

5. Java(Spring)에서 어떻게 사용할까?

보통 Spring에서는 Spring Data Redis를 통해 Redis를 쉽게 연동한다

@Autowired
private StringRedisTemplate redisTemplate;

redisTemplate.opsForValue().set("key", "value");
String result = redisTemplate.opsForValue().get("key");

JSON저장 시에는 ObjectMapper 와 함께 사용하기도 한다.


6. 정리

항목 설명
속도 메모리 기반으로 매우 빠름
용도 캐시, 세션 저장소, 랭킹 시스템, 큐, Pub/Sub 등
구조 Key-Value Store, 다양한 타입 지원
패턴 Cache Asdie Pattern, Write-through 등
사용법 Spring Data Redis or Jedis/Lettuce 클라이언트 사용

'개발 > 알면 좋은' 카테고리의 다른 글

도커(Docker)  (0) 2025.03.28
클라우드 DB vs 물리 서버 DB  (0) 2025.03.28
데브옵스(DevOps)  (0) 2025.03.26
카프카(Kafka)  (0) 2025.03.25