Database

redis를 사용하는 이유

MDanderson 2024. 7. 31. 17:51

필터를 사용하여 접속 요청량을 제한할 때 레디스(Redis)를 사용하면 여러 가지 이점이 있습니다.

 

레디스는 메모리 기반의 데이터 구조 저장소로, 키-값 캐시 및 저장소로 사용됩니다. 레디스를 사용하면 분산된 환경에서 요청 수를 효과적으로 카운트하고 관리할 수 있어, 고성능의 요청 제한 솔루션을 구현할 수 있습니다.

레디스를 사용하는 이유

  1. 분산 처리 지원: 레디스는 네트워크를 통해 접근 가능한 독립 실행형 서버로서 작동하기 때문에, 여러 서버가 공유하는 요청 수 카운터로 사용할 수 있습니다. 이는 단일 서버에만 종속된 상태를 벗어나 전체 시스템에서 요청 수를 일관되게 관리할 수 있게 해 줍니다.
  2. 빠른 응답 속도: 레디스는 메모리 기반의 저장소이기 때문에 읽기 및 쓰기 작업이 매우 빠릅니다. 요청 제한 로직에 레디스를 사용하면, 대량의 트래픽을 처리하면서도 빠른 응답 속도를 유지할 수 있습니다.
  3. 만료 기능: 레디스의 키에는 TTL(Time-To-Live)을 설정할 수 있어, 정해진 시간 후에 자동으로 키를 만료시킬 수 있습니다. 예를 들어, 분당 요청 수를 제한하고 싶다면, 각 키의 만료 시간을 60초로 설정하면 됩니다. 이렇게 하면 매 분마다 자동으로 카운트가 리셋됩니다.
  4. 유연성 및 확장성: 레디스는 다양한 데이터 구조를 지원하므로, 요청 수 제한 외에도 세션 관리, 실시간 분석 등 다양한 목적으로 확장하여 사용할 수 있습니다.

 

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