Redis Use Cases: Caching, Queues, Rate Limiting

Backend2026-10-04TryQuickToolBox

Du hast eine Web-App entwickelt, die an Fahrt aufnimmt, aber jetzt belastet jeder Seitenaufruf die Datenbank, Hintergrundjobs stapeln sich und einige Nutzer überlasten deine API. Du brauchst einen schnellen In-Memory-Datenspeicher, um diese Herausforderungen zu bewältigen. Redis ist die Lösung der Wahl für Caching, Queues und Rate Limiting. In diesem Artikel erkunden wir diese drei Kernanwendungsfälle mit praktischen Beispielen und Best Practices.

Warum Redis für Caching, Queues und Rate Limiting?

Redis ist ein In-Memory-Key-Value-Speicher, der für seine Geschwindigkeit und Vielseitigkeit bekannt ist. Er unterstützt reichhaltige Datenstrukturen wie Strings, Listen, Sets, Sorted Sets und Hashes, was ihn ideal für vielfältige Aufgaben macht. Seine atomaren Operationen und Pub/Sub-Fähigkeiten erweitern seinen Nutzen zusätzlich. Ob du die Datenbanklast reduzierst, Dienste entkoppelst oder APIs schützt – Redis bietet ein einfaches, aber leistungsstarkes Toolkit.

1. Caching mit Redis

Caching ist der häufigste Anwendungsfall von Redis. Indem du häufig abgerufene Daten im Speicher hältst, reduzierst du Latenz und Datenbanklast. Die TTL-Funktion (Time-to-Live) von Redis lässt veraltete Daten automatisch ablaufen.

Wie man Caching implementiert

  1. Cache prüfen: Bevor du die Datenbank abfragst, prüfe, ob die Daten in Redis vorhanden sind.
  2. Bei Cache-Miss: Hole die Daten aus der Datenbank und speichere das Ergebnis mit einer Ablaufzeit in Redis.
  3. Bei Cache-Hit: Gib die zwischengespeicherten Daten direkt zurück.

Hier ist ein Python-Beispiel mit redis-py:

import redis
import json

r = redis.Redis(host='localhost', port=6379, db=0)

def get_user(user_id):
    cache_key = f"user:{user_id}"
    cached = r.get(cache_key)
    if cached:
        return json.loads(cached)
    # Simulate DB fetch
    user = fetch_user_from_db(user_id)
    r.setex(cache_key, 3600, json.dumps(user))  # Cache for 1 hour
    return user

Best Practices für Caching

2. Queues mit Redis

Redis-Listen und Sorted Sets ermöglichen einfache, aber robuste Message Queues. Sie sind perfekt für Hintergrundjobs, Task Queues und Event-Verarbeitung. Im Gegensatz zu dedizierten Message Brokern sind Redis-Queues leichtgewichtig und einfach einzurichten.

Implementierung einer einfachen Queue

Verwende LPUSH, um Jobs hinzuzufügen, und BRPOP, um sie blockierend zu konsumieren:

# Producer
r.lpush('job_queue', json.dumps({'task': 'send_email', 'to': 'user@example.com'}))

# Consumer
while True:
    _, job = r.brpop('job_queue', timeout=30)
    if job:
        process_job(json.loads(job))

Fortgeschrittene Queues mit Sorted Sets

Für verzögerte Jobs oder Prioritätswarteschlangen verwende Sorted Sets mit Zeitstempeln als Scores. Consumer holen Jobs mit Scores