[Spring] 스프링부트에서 Redis 이용하기 (Windows 11)

Oayenn·2023년 7월 24일
0

Spring

목록 보기
2/3
post-thumbnail

💡개요

프로젝트에서 로그아웃을 구현하기 위해 공부하던 중 Redis를 사용해야 한다는 걸 알게 됐다. MySQL, MariaDB,.. 이런 익숙한 이름이 아닌 처음 보는 데이터베이스를 활용해야 한다기에 그게 무엇일지 궁금해졌다.
구현하면서 알게 된 정보들을 좌르륵 공유해보겠다!

⬇️ 로그아웃 구현하려고 애썼던 기록 보기
https://velog.io/@oayenn/Spring-Request-method-GET-is-not-supported


💡redis란?

Redis란 "Remote Dictionary Server"의 약자로, 인메모리 데이터 저장소로서 빠르고 효율적인 데이터 관리를 위해 사용되는 오픈소스 소프트웨어이다.

  • 데이터를 디스크에 저장하지 않고 메모리에 저장하므로 데이터 액세스와 처리 속도가 DB보다 빠름.
  • key-value 쌍의 형태로 데이터를 저장, 조회, 업데이트하며, key에 TTL을 적용해 만료 기한을 설정할 수 있음.
  • 문자열, 리스트, 해시, set, sorted set 등을 저장할 수 있음.
  • 데이터베이스, 캐싱 및 메시지 브로커 등 다양한 용도로 활용됨.

✏️ TTL : Time To Live / 패킷이 라우터에 의해 폐기될 때까지 네트워크 내부에 존재하도록 설정된 시간


💡Redis를 사용해야 하는 이유

위에서 정리한 Redis의 특징이 곧 Redis를 사용하는 이유가 된다.

  1. Redis는 key-value 쌍으로 데이터를 관리하며, 특히 key에 TTL을 적용해 expire를 설정할 수 있으므로 로그인 세션을 관리하기에 적합하다. 만약 Refresh Token을 DB에 저장할 경우, 스케줄러나 트리거를 통해 토큰을 직접 컨트롤해야 한다. Redis를 사용하면 자동으로 세션 데이터가 정리되므로 서버단에서 핸들링해야 하는 부담이 줄어든다.

  2. 데이터 액세스 속도가 빠르기 때문에 로그인 시 병목 현상을 방지할 수 있다는 것 역시 장점이다. 로그인 및 로그아웃과 같은 사용자 인증 작업은 빠른 응답 시간이 필요하기 때문!


💡본격! Redis 사용하기 (Windows 11)

Redis 서버 실행 없이 코드만 작성하고 냅다 프로그램을 실행하려고 하면

이렇게 Unable to connect to Redis 오류가 발생한다. (Spring 내장 라이브러리인줄 알고 오류 원인 찾느라 허송세월한 사람...🙋🏻‍♀️)
우선 Redis 프로그램을 설치하고 Redis 서버부터 실행해야 한다.

1. Redis 설치

Redis 깃허브로 들어가 .msi 설치 파일을 다운 받는다.
https://github.com/microsoftarchive/redis/releases

msi 파일 다운로드 완료 후 설치 진행!

📢 Tip : redis의 기본 포트 번호는 6379이다.


2. Redis 서버 실행

구글에서 'Redis 서버 실행' 키워드로 검색하면 보통 아래의 방법이 나온다.

  1. redis-server (Redis 데이터베이스 서버 실행)
  2. redis-cli ping (Redis 서버와 정상적으로 연결되었는지 테스트)

하지만 현재 배포된 3.0.504 버전 기준으로는 설치 완료와 동시에 서비스에 자동 등록되어 실행되며, 작업 관리자에서 프로세스 상태를 확인할 수 있다.

Reids 설치 파일 내에 포함된 redis-cli.exe 파일을 실행해 "ping"을 입력했을 때 "pong"이 돌아오면 성공!

📢 Tip : redis-server is not recognized as an internal or external command ~

  • redis-serverredis-cli 명령어를 입력하면 아래 사진과 같은 오류가 발생하며 인식되지 않는다. 시스템 환경변수의 Path에 redis 파일 경로를 추가하면 cmd 창에서도 redis를 제어할 수 있지만 이 경우 cmd 창과 cli 창을 닫으면 서버가 자동 종료된다.
  • redis 서버의 백그라운드 실행을 위해 .conf 파일을 수정하는 등 작업을 거쳐야 하므로 해당 방법은 추천하지 않는다.

3. host, port 지정

Spring 어플리케이션과 Redis를 연결하기 위해서는 호스트와 포트를 지정해야 한다. 클라이언트 어플리케이션이 어떤 포트를 통해 Redis 서버와 통신할지 알아야 하기 때문이다. 따라서 application.properties (또는 application.yml) 파일에 Redis 연결 정보를 설정한다.

기본적으로 Redis 서버는 localhost의 6379 포트에서 실행되지만, 만약 다른 호스트나 포트 번호를 사용하도록 지정했다면 해당 정보를 적어주면 된다.

application.properties

spring.redis.host=localhost
spring.redis.port=6379

application.yml


spring:
  redis:
    host: localhost
    port: 6379

참고

profile
차근차근 쌓아올리기

0개의 댓글

관련 채용 정보