>웹 프론트엔드 >JS 튜토리얼 >Windows의 Redis 및 속도 제한: 실용 가이드

Windows의 Redis 및 속도 제한: 실용 가이드

DDD
DDD원래의
2024-10-11 10:35:02409검색

Redis on Windows & Rate Limiting: A Practical Guide

Windows에서 Redis를 실행해 보았으나 공식적인 지원이 없다는 것을 알게 된 적이 있습니까? 괜찮아요! 이 문제와 씨름한 후(프로덕션 서버를 한두 번 다운시켰습니까?) Windows에서 Redis를 실행하는 세 가지 안정적인 방법과 속도 제한을 위한 깔끔한 구현을 찾았습니다.

Windows에서 Redis 받기

1. Docker 방식(팀에 권장)

docker pull redis
docker run --name redis-test -p 6379:6379 -d redis

프로: 프로덕션과 동일하게 작동
단점: Docker Desktop은 리소스를 많이 사용할 수 있습니다

2. WSL 방식(개인 프로젝트에 적합)

wsl --install  # In PowerShell as admin
# Install Ubuntu from Microsoft Store, then:
sudo apt update
sudo apt install redis-server
sudo service redis-server start

프로: 경량
단점: WSL 네트워킹은 까다로울 수 있습니다

3. Windows 빌드(가장 간단한 설정)

  • tporadowski/redis에서 MSI 다운로드
  • 서비스 설치 및 시작:
redis-cli

Pro: Windows 서비스로 실행
단점: 공식적으로 지원되지 않음

속도 제한을 위해 Redis를 사용하는 이유는 무엇입니까?

최근 Firebase 프로젝트에 속도 제한이 필요했습니다. Firebase는 훌륭하지만 다음과 같은 이유로 속도 제한에는 적합하지 않습니다.

  • Firestore/RTDB에 카운터를 쓰는 것은 느리고 비용이 많이 듭니다
  • 내장된 한도는 기본적이고 융통성이 없습니다

그러나 Redis는 다음과 같은 이유로 완벽합니다.

  • 밀리초 미만의 응답
  • 원자적 연산
  • 자동 만료되는 키
  • 엄청나게 저렴하게 운영 가능

단순 속도 제한 코드

다음은 제대로 작동하는 깔끔한 Express 미들웨어입니다.

const Redis = require('ioredis');
const redis = new Redis();

async function rateLimit(req, res, next) {
  const key = `limit:${req.ip}`;
  const limit = 100; // requests per window
  const window = 3600; // 1 hour in seconds

  try {
    const hits = await redis.incr(key);

    if (hits === 1) {
      await redis.expire(key, window);
    }

    if (hits > limit) {
      return res.status(429).json({
        message: "Slow down there, speed racer!"
      });
    }

    next();
  } catch (err) {
    console.error('Redis error:', err);
    next(); // Fail open
  }
}

중요한 실수

속도 제한을 위해 Firebase에서 Redis로 전환:

  • 속도 제한 확인: ~100ms → ~1ms
  • 월 비용: ~$30 감소
  • 코드 복잡성: 절반으로 줄임

이 설정을 사용해야 하는 경우

✅ 완벽한 대상:

  • API 속도 제한
  • 세션 관리
  • 빠른 카운터/플래그
  • 스피드가 필요할 때

❌ 다음의 경우 건너뛰세요.

  • 매우 낮은 트래픽(< 요청 100개/분)
  • 속도 제한이 내장된 API 게이트웨이 사용
  • 내부 API만

빠른 문제 해결

Redis 연결 문제의 90%는 다음과 같은 이유 때문입니다.

  1. Redis가 실행되지 않습니다(서비스 확인)
  2. 잘못된 포트/호스트(기본값: localhost:6379)
  3. WSL/Docker 네트워킹 문제(IP 주소 확인)

마무리

Redis는 Windows를 공식적으로 지원하지 않을 수도 있지만 이러한 방법을 사용하면 문제가 없습니다. 특히 속도 제한의 경우 일반 자동차 대신 경주용 자동차를 사용하는 것과 같습니다. 물론 둘 다 사용할 수 있지만 하나는 속도를 위해 특별히 제작되었습니다!

즐거운 코딩하세요! ?


P.S. - 연결 문제를 디버깅하는 데 시간을 보내기 전에 항상 Redis를 시작하는 것을 잊지 마십시오. 이건 저를 믿으세요. ?

위 내용은 Windows의 Redis 및 속도 제한: 실용 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.