๐ŸŒ Detecting your locationโ€ฆ
๐Ÿ“ข Advertisement โ€” Configure AdSense in Appearance โ†’ Customize โ†’ AdSense Settings

Redis-Tutorial 2026: Caching, Pub/Sub, Streams und Produktionsmuster

โฑ๏ธ3 min read  ยท  445 words
Redis Tutorial 2026: Caching, Pub/Sub, Streams and Production Patterns

Redisist der am weitesten verbreitete In-Memory-Datenspeicher im Jahr 2026. Lesevorgรคnge im Submillisekundenbereich, Pub/Sub-Messaging und atomare Operationen machen ihn unverzichtbar fรผr Caching, Sitzungsspeicherung, Ratenbegrenzung und Echtzeit-Bestenlisten. Dieses Tutorial behandelt Redis von der Installation bis zu den Produktionsmustern.

Installieren Sie Redis

# Ubuntu
sudo apt install redis-server
sudo systemctl enable redis-server

# macOS
brew install redis
brew services start redis

# Docker (simplest)
docker run -d --name redis -p 6379:6379 redis:7-alpine

# Connect
redis-cli ping  # PONG

Grundlegende Datentypen

# String
SET user:1:name 'Alice'
GET user:1:name         # Alice
SETEX session:abc 3600 'user_id=1'  # TTL 1 hour

# Hash (object)
HSET user:1 name Alice email alice@example.com age 30
HGET user:1 name        # Alice
HGETALL user:1          # all fields

# List
LPUSH queue:jobs 'job1' 'job2' 'job3'
RPOP queue:jobs         # job1 (queue behavior)
LRANGE queue:jobs 0 -1  # all items

# Set
SADD tags:post:1 python redis backend
SMEMBERS tags:post:1
SISMEMBER tags:post:1 python  # 1 = true

# Sorted Set (leaderboard)
ZADD leaderboard 1500 'Alice' 2200 'Bob' 1800 'Carol'
ZREVRANGE leaderboard 0 2 WITHSCORES  # top 3

Redis mit Python

pip install redis

import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)

# Cache pattern
def get_user(user_id: int) -> dict:
    key = f'user:{user_id}'
    cached = r.hgetall(key)
    if cached:
        return cached
    # Cache miss โ€” fetch from DB
    user = db.get_user(user_id)  # your DB query
    r.hset(key, mapping=user)
    r.expire(key, 3600)  # 1 hour TTL
    return user

# Rate limiting
def rate_limit(ip: str, limit: int = 100) -> bool:
    key = f'rate:{ip}'
    count = r.incr(key)
    if count == 1:
        r.expire(key, 60)  # 60-second window
    return count <= limit

Pub/Sub-Nachrichten

import redis, threading

r = redis.Redis(decode_responses=True)

# Publisher
def publish_event(channel: str, data: str):
    r.publish(channel, data)

# Subscriber
def subscribe_events():
    pubsub = r.pubsub()
    pubsub.subscribe('events')
    for message in pubsub.listen():
        if message['type'] == 'message':
            print(f'Received: {message["data"]}')

# Run subscriber in background thread
t = threading.Thread(target=subscribe_events, daemon=True)
t.start()

publish_event('events', 'user_logged_in:123')

Redis-Streams (moderne Warteschlange)

# Produce
XADD events:orders * user_id 123 amount 49.99 item laptop

# Consume (consumer group)
XGROUP CREATE events:orders workers $ MKSTREAM
XREADGROUP GROUP workers consumer1 COUNT 10 STREAMS events:orders >

# Acknowledge
XACK events:orders workers <message-id>

Produktionstipps

  • Setzemaxmemoryundmaxmemory-policy allkeys-lruum OOM zu verhindern
  • Aktivieren Sie die Persistenz mitappendonly yes(AOF) fรผr die Wiederherstellung nach einem Absturz
  • Verwenden Sie Verbindungspooling (redis.ConnectionPool) in Python
  • Alle Schlรผssel nach Dienst voranstellen:auth:session:...,cache:user:...
  • รœberwachen Sie mitredis-cli info statsundredis-cli monitor

Fazit

Redis ist nicht nur ein Cache โ€“ es ist ein Datenstrukturserver. Fรผgen Sie Redis zu jedem Backend hinzu, um sofortiges Caching, Ratenbegrenzung, Sitzungsspeicherung und Echtzeitfunktionen zu erhalten. Operationen im Submillisekundenbereich mit Millionen von Anfragen pro Sekunde machen es in modernen Architekturen unersetzlich.

โœ๏ธ Leave a Comment

Your email address will not be published. Required fields are marked *

๐ŸŒ Read in:๐Ÿ‡ฌ๐Ÿ‡ง English๐Ÿ‡ฉ๐Ÿ‡ช Deutsch๐Ÿ‡ง๐Ÿ‡ท Portuguรชs๐Ÿ‡ธ๐Ÿ‡ฆ ุงู„ุนุฑุจูŠุฉ๐Ÿ‡ฎ๐Ÿ‡ณ เคนเคฟเคจเฅเคฆเฅ€๐Ÿ‡ง๐Ÿ‡ฉ เฆฌเฆพเฆ‚เฆฒเฆพ