0x800705aa
)오류 메시지: 시스템 리소스가 부족...
🔍 원인: 메모리/디스크 부족 또는 WSL 리소스 과다 사용이었다.
🛠️ 해결
C:\Users\{User}
폴더에 .wslconfig
파일 생성했다.
.txt
파일로 생성해 내용 넣고 .txt
를 다시 지우고 생성하면 된다.[wsl2]
memory=2GB
processors=2
이후 wsl --shutdown
후 재실행했지만 또 다른 문제가 있었다.
🔍 원인: Ubuntu 배포판이 파일 시스템이 제대로 설정되지 않거나, 설치 중 오류로 인해 손상된 경우였다.
🛠️ 해결
wsl --unregister Ubuntu
명령으로 초기화하고wsl --install -d Ubuntu
로 재설치했다.Ubuntu 구성
username
, password
)sudo apt update
sudo apt install redis
설치 시 약 7MB 내외의 용량만 사용되고 설치 완료 후, Redis 버전 7.x 자동 설치된다.
백그라운드 실행
sudo service redis-server start
작동 확인
redis-cli ping
# PONG 이 출력되면 성공
⚠️ redis-server 직접 실행 시 주의
bind: Address already in use
에러가 발생한 이유는 이미 백그라운드에서 Redis 서버가 실행 중이었기 때문이었다.
그래서 redis-cli ping
로 서버가 잘 동작하고 있는 지 확인을 해주고 잘 작동중이어서 넘어갔다.
작업 | 명령어 |
---|---|
Redis 실행 | sudo service redis-server start |
Redis 중지 | sudo service redis-server stop |
Redis 상태 확인 | udo service redis-server status |
Redis 클라이언트 접속 | redis-cli |
application.yml
에 Redis 설정 추가
spring:
data:
redis:
host: localhost
port: 6379
RedisUtil
유틸 클래스 작성
set
, get
, delete
, hasKey
등 유틸 메서드 구현
JWT 인증 구조 + Redis 연동
로그인 시 RefreshToken 생성 후 Redis 저장
String refreshToken = jwtProvider.createRefreshToken(user.getId());
redisUtil.set("RT:" + user.getId(), refreshToken, 14, TimeUnit.DAYS);
로그아웃 시
RT:{userId}
키 삭제BL:{token}
형식으로 블랙리스트에 저장redisUtil.delete("RT:" + userId);
redisUtil.set("BL:" + accessToken, "logout", expiration, TimeUnit.MILLISECONDS);
상세한 코드는 JWT, Redis, TokenService, UserService
🔍 원인
RedisUtil
쪽에 set
메서드에서 값이 잘 들어오는 지 확인해보니 잘 들어와서 찾아보니 WSL에서 127.0.0.1
은 WSL 내부 Redis를 가리키는 것이었다. 하지만 Spring Boot 앱은 Windows Redis를 사용하고 있었다. 그래서 서로 다른 Redis 인스턴스를 바라보고 있었기 때문에 조회할 수 없었던 것이었다.
🛠️ 해결
로컬에서 실행시키려면 Redis가 있어야되서 다운받아줬다.
설치 후 시스템 PATH 설정해 redis-cli
명령어 어디서든 사용 가능하도록 처리했다.
C:\Program Files\Redis\
로 시스템 변수 PATH에 넣어주면 된다. (본인이 다운로드 받은 곳을 넣어줘야 함)CMD에서 아래 명령으로 Redis 접속
redis-cli
확인
> keys RT:*
> keys BL:*
결과
127.0.0.1:6379> keys RT:*
1) "RT:6"
127.0.0.1:6379> keys BL:*
1) "BL:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
✅ RefreshToken 저장, AccessToken 블랙리스트 등록 모두 성공했다.
처음에는 WSL이 제대로 작동하지 않아 고생했지만, 시스템 자원 설정과 .wslconfig
파일을 통해 해결할 수 있었다. Redis는 예상보다 설치와 실행이 간단했고, 스프링 부트 프로젝트와의 연동도 쉽게 완료할 수 있었다.
다만, Redis 인스턴스가 다르다는 점을 놓친 부분에서 문제를 해결하는 데 시간이 조금 걸렸지만, 결국 Windows Redis 설치로 해결됐다.
이런 소소한 문제들이 있었지만 Redis와 Spring Boot를 연동해 Jwt 인증 + Redis 구조를 구현할 수 있었던 좋은 경험이었다.