redis-patternslisted
Install: claude install-skill Izangi2714/claude-code-python-stack
# Redis Patterns for Python
Redis usage patterns for caching, sessions, queues, and distributed systems.
## When to Activate
- Implementing caching layer
- Setting up session storage
- Building pub/sub messaging
- Implementing rate limiting
- Using distributed locks
## Connection Setup
### redis-py (Sync)
```python
import redis
pool = redis.ConnectionPool(
host="localhost", port=6379, db=0,
max_connections=20,
decode_responses=True,
)
r = redis.Redis(connection_pool=pool)
```
### redis-py (Async)
```python
import redis.asyncio as aioredis
pool = aioredis.ConnectionPool.from_url(
"redis://localhost:6379/0",
max_connections=20,
decode_responses=True,
)
redis_client = aioredis.Redis(connection_pool=pool)
# Usage
async def get_cached(key: str) -> str | None:
return await redis_client.get(key)
```
## Caching Patterns
### Simple Cache
```python
import json
from datetime import timedelta
async def get_user(user_id: int) -> dict:
cache_key = f"user:{user_id}"
# Try cache first
cached = await redis_client.get(cache_key)
if cached:
return json.loads(cached)
# Fetch from DB
user = await db.get_user(user_id)
if user:
await redis_client.setex(cache_key, timedelta(minutes=15), json.dumps(user))
return user
```
### Cache Invalidation
```python
async def update_user(user_id: int, data: dict) -> dict:
user = await db.update_user(user_id, data)
# Invalidate cache
await redis_client.dele