IT recording...

[Redis] Redis란? - (1) 본문

Spring

[Redis] Redis란? - (1)

I-one 2022. 4. 1. 15:54

[더 편하게 보고 싶다면 -> 원본 링크]

https://adorable-aspen-d23.notion.site/Spring-Spring-Boot-Redis-6ecda14328a34ec1a0e3dc2990a51277

 

[Spring] Spring Boot + Redis 연결하기

1. Redis란?

adorable-aspen-d23.notion.site

 

1. Redis란?

트랜잭션이 자주 일어나는 화면에서 속도가 느려짐을 느끼곤 한다. 거의 모든 사용자가 조회하는 화면 등에서 DB에 접근하여 쿼리를 날리는 거니까 그럴만하다.

그럼 어떻게 해결하지? → Redis!

<aside> 💡 Redis = Remote + Dictionary + Server

</aside>

  • Redis는 인메모리 데이터 구조 저장소로, 데이터베이스, 캐시, 메시지 브로커로 사용한다.

1. In-memory

: 컴퓨터의 메인 메모리 RAM에 데이터를 올려서 사용하는 방법 ⇒ 속도 슈퍼 빠름

  • But, 용량 엄청 적음 → 메인 데이터베이스로 쓰기에는 무리가 있다.

2. Cache

: 캐시는 서버의 부하를 감소시키고, 빠른 조회 성능을 확보하여 보다 쾌적한 서비스를 제공한다.

  • 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스 해주는 것
    • 파레토의 법칙 : 80%의 결과는 20%의 원인으로 발생한다. ( = 서비스의 80%는 20%의 사용자가 사용한다.)
    • → 서비스를 할 때 많이 사용되는 20%를 캐싱한다면 전체적으로 영향을 주어 효율을 극대화할 수 있다.
  • Look aside cache (Lazy Loading)
    • 캐시를 먼저 접근하여 데이터가 있는지 확인하고,
    • 있다면 캐시 데이터 사용 / 없다면 실제 DB또는 API를 호출하여 사용한 후 캐시에 저장한다.
  • Write back
    • 데이터를 캐시에 저장한 후, 일정 시간동안 캐시에 모인 데이터를 DB에 저장한다.
    • 이후 캐시에 존재하는 데이터는 삭제한다.

https://ozofweird.tistory.com/entry/Spring-Boot-Redis-Cache-MySQL-이용한-간단한-API-제작

캐시를 사용한 Redis 예제

3. Redis의 특징

  • Redis는 다양한 자료구조를 지원한다. (String, List, Set, Sorted Set, Hash 등)
  • Sigle Thread 이기 때문에 Atomic 하다. (→ Race Condition에 빠질 수 있는 것을 방지한다.)
  • Persistence를 지원하여 서버가 꺼지더라도 다시 데이터를 불러들일 수 있다.

5. 운영 시 주의점

[우아한테크세미나] 191121 우아한레디스 by 강대명님

인메모리 데이터 저장소 Redis, 왜 사용할까? #Redis 파헤치기

5-1. 주의사항

  1. 메모리 관리를 잘하자
  2. O(N) 관련 명령어는 주의하자
  3. Replication

Redis 들어가서 자세한 내용 고고

2. 그래서 언제 쓸건데?

  • 랭킹 정보 제공 (Sorted Set 사용)
    • 랭킹 상위 100위를 보여주는 기능
      • 기존의 Oracle같은 관계형 데이터베이스에 랭킹 정보를 저장하고 order by로 불러올 수 있다.
      • But, 사용자가 수백만명이라면? → 시간 Super
      • ⇒ 캐시에 상위 100명의 랭킹 정보를 담아두자!
    • https://comart.io/blog/realtime-ranking-with-redis-sorted-set
  • JWT + Redis (인증 토큰 저장)
  • 세션 정보 관리
  • Remote Date Store
    • 여러 서버가 데이터를 공유해야 할 때 사용할 수 있다.
    • 특히 Redis는 Single Thread이기 때문에 Race Condition이 낮다는 것을 활용할 수 있다.
  • 실시간 인기 상품 (Sorted Set 사용)
    • 일정 시간동안 가장 많이 조회된 상품 1~9(N)위를 보여주는 기능
      • ⇒ 캐시에 상위 9개(N개)의 상품 정보를 담아두자!

3. Lettuce VS Zedis

Jedis 보다 Lettuce 를 쓰자

위의 글에 따르면 Lettuce(상추..)를 사용하는 것이 성능 면에서 뛰어나다.

Comments