Sun's Blog

Redis 기초 본문

DB/Redis

Redis 기초

버스는그만 2023. 5. 11. 14:16

Redis의 특징

  • In-Memory Data Structure Store
  • Open Source
  • Support data structures

Redis의 Race Condition 해결

Race Condition이란?

경쟁 상태란 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결괏값에 영향을 줄 수 있는 상태를 말한다. 입력 변화의 타이밍이나 순서가 예상과 다르게 작동하면 정상적인 결과가 나오지 않게 될 위험이 있는데 이를 경쟁 위험이라고 한다.
  • Redis는 기본적으로 Single Thread
  • Redis의 경우 자료구조가 Atomic 하기 때문에, 해당 Race Condition을 피할 수 있습니다.

Redis의 사용처

  • Remote Data Store
    여러 서버에 데이터를 공유하고 싶을 때 사용
  • 한대에서만 필요하다면 전역 변수를 쓰면 되지 않을까?
    Redis 자체가 Atomic을 보장해 준다.(Single Thread)
  • 인증 토큰 저장, Ranking 시스템, User API Limit, Job Queue 등등 사용

Redis 사용 시 주의사항

  • Single Thread
    싱글 스레드이므로 하나의 연산이 오래 걸리면 성능상 문제가 발생할 수 있다. -> 시간복잡도 O(N) 이상의 연산은 피하는 것이 좋다.
  • 데이터 백업
    메모리에 모든 데이터를 저장하기 때문에 서버가 다운될 경우 데이터가 모두 손실된다. 이를 위해
    Redis Sentinel이나 Redis Cluster 혹은 스냅샷 기능을 이용해 데이터 복원할 수 있다. -> 추후 공부
  • 메모리 사용
    Redis는 모든 데이터를 메모리에 저장된다. 그렇기 때문에 Redis를 사용할 때 메모리 사용량을 주의해야 한다. 메모리 사용량을 제한하는 방법은 Redis의 Config 파일에 maxmemory 옵션으로 제한할 수 있다.

Windows에서 Redis 시작하기

아래 링크에서 Redis를 다운받자. MS에서 버전 3 이후로 관리를 멈췄으며 다운로드하고 싶다면 WSL을 이용하는 것이 좋을 것이다.

https://github.com/microsoftarchive/redis/releases

 

Releases · microsoftarchive/redis

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis

github.com

 

다운로드하고 압축해제한 뒤 redis-server.exe 파일을 실행하면 아래와 같이 Redis가 실행된 것을 확인할 수 있다.

redis-server.exe 실행

이제 redis-cli.exe를 실행해서 ping을 날려보자

redis-cli.exe pingpong

예쁘게 핑퐁 되는 것을 확인할 수 있다.

 

오늘은 Redis에 대해 간단히 알아보며 윈도우에서 실행해 보았다. 다음은 Redis의 conf파일 커스텀과 현재 SpringBoot 프로젝트에서 JWT Refresh Token과 로그아웃의 BlackList의 역할로 연동해 보자