Maison > interface Web > js tutoriel > le corps du texte

Redis sous Windows et limitation de débit : un guide pratique

DDD
Libérer: 2024-10-11 10:35:02
original
349 Les gens l'ont consulté

Redis on Windows & Rate Limiting: A Practical Guide

Avez-vous déjà essayé d'exécuter Redis sous Windows pour découvrir qu'il n'y avait pas de support officiel ? Ne t'inquiète pas! Après m'être battu moi-même (et avoir arrêté un serveur de production une ou deux fois ?), J'ai trouvé trois moyens fiables de faire fonctionner Redis sous Windows, ainsi qu'une implémentation soignée pour la limitation du débit.

Obtenir Redis sous Windows

1. La méthode Docker (recommandée pour les équipes)

docker pull redis
docker run --name redis-test -p 6379:6379 -d redis
Copier après la connexion

Pro : Fonctionne exactement comme la production
Inconvénient : Docker Desktop peut être gourmand en ressources

2. Méthode WSL (idéale pour les projets personnels)

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
Copier après la connexion

Pro : Léger
Inconvénient : La mise en réseau WSL peut être délicate

3. Windows Build (installation la plus simple)

  • Téléchargez MSI depuis tporadowski/redis
  • Installer et démarrer le service :
redis-cli
Copier après la connexion

Pro : Fonctionne en tant que service Windows
Inconvénient : Non officiellement pris en charge

Pourquoi Redis pour la limitation de débit ?

J'ai récemment eu besoin d'une limitation de débit pour un projet Firebase. Bien que Firebase soit génial, il n'est pas idéal pour limiter le débit car :

  • L'écriture de compteurs sur Firestore/RTDB est lente et coûteuse
  • Les limites intégrées sont basiques et rigides

Redis, cependant, est parfait car :

  • Réponses inférieures à la milliseconde
  • Opérations atomiques
  • Clés à expiration automatique
  • Ridiculement bon marché à utiliser

Le code simple de limitation de débit

Voici un middleware Express propre qui fonctionne :

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
  }
}
Copier après la connexion

Des chiffres réels qui comptent

Passer de Firebase à Redis pour la limitation du débit :

  • Vérification de la limite de débit : ~100 ms → ~1 ms
  • Coûts mensuels : abandonnés ~ 30 $
  • Complexité du code : réduit de moitié

Quand utiliser cette configuration

✅ Parfait pour :

  • Limitation du débit API
  • Gestion des sessions
  • Compteurs/drapeaux rapides
  • Quand vous avez besoin de vitesse

❌ Ignorez-le si :

  • Trafic très faible (< 100 requêtes/minute)
  • Utilisation d'API Gateway avec limitation de débit intégrée
  • API internes uniquement

Dépannage rapide

90 % des problèmes de connexion Redis sont dus à :

  1. Redis ne fonctionne pas (vérifiez les services)
  2. Mauvais port/hôte (par défaut : localhost:6379)
  3. Problèmes de réseau WSL/Docker (vérifier les adresses IP)

Conclure

Redis ne prend peut-être pas officiellement en charge Windows, mais avec ces méthodes, vous êtes couvert. Pour la limitation de débit en particulier, c'est comme utiliser une voiture de course au lieu d'une voiture ordinaire : bien sûr, les deux vous y mèneront, mais l'une d'entre elles est spécialement conçue pour la vitesse !

Bon codage ! ?


P.S. - N'oubliez jamais de démarrer Redis avant de passer des heures à déboguer des problèmes de connexion. Faites-moi confiance sur celui-ci. ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!