필터를 사용하여 접속 요청량을 제한할 때 레디스(Redis)를 사용하면 여러 가지 이점이 있습니다.
레디스는 메모리 기반의 데이터 구조 저장소로, 키-값 캐시 및 저장소로 사용됩니다. 레디스를 사용하면 분산된 환경에서 요청 수를 효과적으로 카운트하고 관리할 수 있어, 고성능의 요청 제한 솔루션을 구현할 수 있습니다.
레디스를 사용하는 이유
- 분산 처리 지원: 레디스는 네트워크를 통해 접근 가능한 독립 실행형 서버로서 작동하기 때문에, 여러 서버가 공유하는 요청 수 카운터로 사용할 수 있습니다. 이는 단일 서버에만 종속된 상태를 벗어나 전체 시스템에서 요청 수를 일관되게 관리할 수 있게 해 줍니다.
- 빠른 응답 속도: 레디스는 메모리 기반의 저장소이기 때문에 읽기 및 쓰기 작업이 매우 빠릅니다. 요청 제한 로직에 레디스를 사용하면, 대량의 트래픽을 처리하면서도 빠른 응답 속도를 유지할 수 있습니다.
- 만료 기능: 레디스의 키에는 TTL(Time-To-Live)을 설정할 수 있어, 정해진 시간 후에 자동으로 키를 만료시킬 수 있습니다. 예를 들어, 분당 요청 수를 제한하고 싶다면, 각 키의 만료 시간을 60초로 설정하면 됩니다. 이렇게 하면 매 분마다 자동으로 카운트가 리셋됩니다.
- 유연성 및 확장성: 레디스는 다양한 데이터 구조를 지원하므로, 요청 수 제한 외에도 세션 관리, 실시간 분석 등 다양한 목적으로 확장하여 사용할 수 있습니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'io.lettuce:lettuce-core'
}
spring:
redis:
host: localhost # Redis 서버의 호스트 주소
port: 6379 # Redis 서버의 포트 번호
password: # Redis 접근 비밀번호, 필요한 경우만 설정
database: 0 # Redis 데이터베이스 인덱스
timeout: 60000 # Redis 서버 접근 타임아웃 값 (밀리초 단위)
lettuce:
pool:
max-active: 8 # 커넥션 풀에서 관리하는 최대 커넥션 수
max-idle: 8 # 커넥션 풀에 유지할 최대 유휴 커넥션 수
min-idle: 0 # 커넥션 풀에 유지할 최소 유휴 커넥션 수
@리눅스에서 설치하기
sudo apt update
sudo apt install redis-server
@레디스 서버시작.
sudo service redis-server start
@자동실행설정
sudo systemctl enable redis-server.service
@도커에설치
도커를 설치한 후
레디스서버 시작
docker run --name some-redis -d redis
특정서버에서 레디스서버 시작
docker run --name some-redis -p 6379:6379 -d redis