Terminal.skills
Skills/redis
>

redis

Build applications with Redis — caching, session storage, pub/sub, streams, rate limiting, leaderboards, and queues. Use when tasks involve in-memory data storage, real-time messaging, distributed locking, or performance optimization with caching layers.

#redis#caching#database#pub-sub#queues
terminal-skillsv1.0.0
Works with:claude-codeopenai-codexgemini-clicursor
Source

Usage

$
✓ Installed redis v1.0.0

Getting Started

  1. Install the skill using the command above
  2. Open your AI coding agent (Claude Code, Codex, Gemini CLI, or Cursor)
  3. Reference the skill in your prompt
  4. The AI will use the skill's capabilities automatically

Example Prompts

  • "Review the open pull requests and summarize what needs attention"
  • "Generate a changelog from the last 20 commits on the main branch"

Information

Version
1.0.0
Author
terminal-skills
Category
Development
License
Apache-2.0

Use Cases

Build a Customer Health Scoring System
Build a Type-Safe API with Redis Caching
Implement Caching and Full-Text Search Infrastructure
Build a Real-Time Analytics Dashboard
Build a Reliable Webhook Processing Pipeline
Build an AI-Powered Log Anomaly Detector
Build an API Gateway with Plugin System
Build a Data Pipeline with Schema Evolution
Build a Distributed Task Queue with Priorities
Build a GraphQL API with Schema Stitching
Build a Real-Time Analytics Dashboard with ClickHouse
Build a Serverless Image Optimization CDN
Build a User Activity Feed with Fanout
Build Event Sourcing for Financial Transactions
Build a GraphQL API with DataLoader and Caching
Build OAuth SSO Integration with Multiple Providers
Build Self-Healing Infrastructure with Health Checks
Build an ML Model Serving Pipeline
Build a Real-Time Multiplayer Game Server
Build a Server-Sent Events Real-Time Dashboard
Build a Tenant-Aware Job Scheduler
Build an AI Content Moderation Pipeline
Build a Data Export Pipeline with Streaming
Build Database Connection Pooling with Health Checks
Build a Drag-and-Drop Kanban Board
Build an Email Notification System with Templates
Build Secrets Management with Automatic Rotation
Build a Webhook Delivery System with Retries
Build a Background Job Monitoring Dashboard
Build File Upload with Presigned URLs
Build an Idempotent API with Request Deduplication
Build Multi-Region Data Replication
Build a Rate Limiter with Sliding Window
Build a Smart Caching Layer with Invalidation
Build an Event-Sourced Fintech Ledger with CQRS
Build a Real-Time Fraud Detection Pipeline
Build a White-Label SaaS Platform with Tenant Theming
Implement End-to-End Encryption for User Data
Build an AI-Powered Customer Onboarding Flow
Build an Automated Incident Response System
Build a Data Mesh with Self-Serve Analytics
Build a Developer Portal with API Marketplace
Build a Distributed Rate Limiter for an API Gateway
Build an ML Feature Store for Production Recommendations
Build a Cost-Aware Kubernetes Autoscaler
Build an Intelligent Document Processing Pipeline
Build a Real-Time Collaborative Spreadsheet
Build AI-Powered Search with Semantic Ranking
Build an Automated API Versioning and Deprecation System
Build an Automated Data Quality Monitoring System
Migrate a Production Database with Zero Downtime
Build a GDPR-Compliant Data Deletion Pipeline
Build an LLM Gateway with Fallback and Cost Control
Build a Secure File Sharing Platform with Audit Trail
Build an AI Code Review Bot for Pull Requests
Build AI-Powered Customer Support Triage
Build a Config-Driven Notification System
Build a Multi-Region Deployment with Edge Routing
Build a Payments Reconciliation Engine
Build Real-Time Collaboration with CRDTs
Build a Self-Healing Kubernetes Operator
Build an A/B Testing Platform with Statistical Rigor
Build an Automated Compliance Evidence Collector
Build a Distributed Task Scheduler with Exactly-Once Execution
Build a Headless CMS with Live Preview
Build an Internal Feature Marketplace for Platform Teams
Build a Smart Email Routing and Auto-Response System
Build an AI Document Extraction Pipeline
Build a Data Pipeline Orchestrator with Lineage Tracking
Build a Real-Time Permissions System with Zanzibar
Build a WebSocket Gateway for Real-Time Features
Build an Automated Load Testing Framework
Build an Immutable Audit Log for Regulated Industries
Build a Mobile Push Notification Service
Build a Real-Time Collaborative Code Editor
Build a Serverless Image Processing Pipeline
Build Unified Search Across Multiple Data Sources
Build an AI Meeting Summarizer with Action Items
Build an Event-Sourced Shopping Cart
Build a Graceful Degradation System for Microservices
Build a Real-Time Fraud Scoring API
Build AI Search Autocomplete with Embeddings
Build a Bulk Data Export System
Build a Developer Portal with API Key Management
Build a Distributed Cron Job Scheduler
Build Event-Driven Notification Preferences
Build Event-Sourced Inventory Management
Build GraphQL Subscriptions for a Live Dashboard
Build an Internal Feature Request Voting System
Build a Privacy Consent Management Platform
Build an AI-Powered Customer Segmentation Engine
Build an Automated Incident Response Runbook
Build a Container Orchestration Dashboard
Build an Infrastructure Cost Allocation System
Build an Automated Security Scanner for Dependencies
Build a Database Query Performance Analyzer
Build an Event-Driven Notification Orchestrator
Build Multi-Environment Configuration Management
Build a Real-Time Collaborative Whiteboard
Build a Webhook Signature Verification System
Build an A/B Testing Platform
Build an AI Agent with Tool Calling
Build an API Analytics Dashboard
Build an Audit Trail with Immutable Log
Build a Bulk Import System
Build a Calendar Booking System
Build a Checkout Flow with Stripe
Build a Changelog API with In-App Announcements
Build Container Health Monitoring
Build a Content Moderation Pipeline
Build a CSV Export with Streaming
Build Custom Domain Mapping for SaaS
Build Disaster Recovery with Automated Failover
Build a Drag-and-Drop Kanban Board
Build an Email Verification Flow
Build Error Tracking with Source Maps
Build a File Manager with S3
Build Full-Text Search with PostgreSQL
Build a Gamification System with Points and Badges
Build Geolocation-Based Service Routing
Build an In-App Notification Center
Build Magic Link Authentication
Build an MCP Server for Internal Tools
Build a Dynamic Pricing Engine
Build a Multi-Step Form Wizard
Build an Observability Stack with OpenTelemetry
Build an Order Tracking System
Build a Product Recommendation Engine
Build a RAG Pipeline with Vector Search
Build an RBAC Permission System
Build a Rich Text Editor with Collaboration
Build a Session Management System
Build a Slack Bot for Team Automation
Build Soft Delete with Restore and Retention
Build a Subscription Management System
Build a Survey Builder with Analytics
Build a Tax Calculation Engine
Build Tenant Data Isolation for Multi-Tenant SaaS
Build a Threaded Comment System
Build a Two-Factor Authentication System
Build Usage Metering for SaaS Billing
Build a User Onboarding Flow with Progress Tracking
Build a Video Transcoding Pipeline
Build a Waitlist with Referral Boost
Build a Webhook Relay System
Build a Workflow Engine with State Machines
Build a Cookie Consent Manager
Build an E-Signature System
Build a Media Asset Library
Build a Dynamic OG Image Generator
Build a Privacy Dashboard for Data Subject Requests
Build a QR Code Generator API
Build a URL Shortener with Analytics
Build a Bot Detection System
Build a Chargeback Protection System
Build a Health Check Endpoint System
Build Multi-Currency Pricing
Build an On-Call Rotation Manager
Build a Performance Budget Monitor
Build an Announcement Banner System
Build an API Playground
Build a Dark Mode Theme System
Build a Digest Email System
Build Feature Tour Onboarding
Build an IP Geolocation Service
Build SMS OTP Verification
Build an Affiliate Tracking System
Build a Coupon and Discount Engine
Build a Leaderboard System
Build a Payment Link Generator
Build a Poll and Voting System
Build a Social Feed System
Build an SSO Provider
Build a Device Management System
Build a Dunning and Failed Payment Recovery System
Build E-Commerce Product Search
Build a Geo-Fencing System
Build an Invite-Only Access System
Build a Link Preview Generator
Build a PDF Template Engine
Build a Dynamic Pricing Engine
Build a Screenshot API
Build a Shipping Rate Calculator
Build a Terms Acceptance Tracker
Build a Warehouse Inventory System
Build a Digital Asset Management System
Build a Data Subject Request Handler
Build an OAuth Provider
Build a Proration Billing System
Build an Email Template Builder
Build a Web Push Notification Service
Build a CAPTCHA Verification System
Build a GraphQL Playground
Build an i18n Translation Management System
Build an In-App Messaging System
Build an IP Blocking Firewall
Build a Sandbox Environment System
Build a Tooltip Guide System
Build an API Key Management System
Build a Circuit Breaker Pattern
Build a Config Management Service
Build an Event Sourcing System
Build a Distributed Task Queue
Build a Multi-Step Approval Workflow
Build Real-Time Collaboration Cursors
Build a Tenant Onboarding Wizard
Build an AI Agent Orchestration Loop
Build Browser Automation for AI Agents
Build a Context Database for AI Agents
Build a Generative UI Framework
Build a Real-Time News Aggregation Dashboard
Build a Voice Synthesis API
Build an AI Workflow Builder
Build a DNS Domain Management System
Build an LLM Prompt Management System
Build a Semantic Search Engine
Build a Streaming Data Pipeline
Build a Video Transcoding Queue
Build a Workspace CLI Tool
Build an Automated Research Agent
Build a Data Lineage Tracker
Build a Document AI Extraction Pipeline
Build an Edge Function Runtime
Build an Infrastructure Health Monitor
Build an LLM-Powered Stock Analyzer
Build a Prompt Management Platform
Build an RSS Feed Aggregation Service
Build a Structured LLM Output Parser
Build an Auto-Scaling Engine
Build a Data Masking Engine
Build a Database Sharding Layer
Build a Dependency Graph Analyzer
Build a Credential Vault
Build a Dynamic Form Builder
Build a Sitemap Generator
Build a Usage Metering and Billing Engine
Build an API Mock Server
Build a File Format Converter API
Build a Markdown Collaborative Editor
Build a Rolling Deployment Engine
Build a Bidirectional Data Sync Engine
Build an Entity Extraction Pipeline
Build a Spreadsheet Formula Engine
Build a Transactional Outbox Pattern
Build an Error Boundary System
Build a Tenant Isolation Testing Framework
Build a PDF Merge and Fill Service
Build a Subscription Lifecycle Manager
Build a Workspace Automation CLI
Build an Embeddable Chat Widget
Build an Inbound Email Processor
Build a Token Bucket Rate Limiter
Build an Admin Impersonation System
Build a Cron Job Dashboard
Build a Custom Domain SSL Provisioner
Build an Outgoing Webhook Builder
Build an API Usage Analytics Dashboard
Build a Content Recommendation Engine
Build a Data Retention Manager
Build Geo-Aware CDN Routing
Build an Image CDN Proxy
Build an NPS Feedback System
Build a Release Note Widget
Build a Team Permission Matrix
Build a Slow Query Analyzer
Build a Tenant Usage Dashboard
Build an AI Text Classification API
Build an API Idempotency Layer
Build an API Gateway Plugin System
Build a Feature Flag Audit System
Build a Content Calendar System
Build a Worker Pool Manager
Build a Payment Reconciliation Engine
Build a Compliance Audit Checklist System
Build a Media Transcoding Pipeline
Build a Virtual Scroll Table
Build a Content Moderation Queue
Build a Distributed Lock Manager
Build a Team Invitation System
Build a Changelog RSS Feed
Build a Database Query Profiler
Build an AI Agent Evaluation Framework
Build a Notification Template Engine
Build Interactive API Documentation
Build a Request Tracing System
Build an API Key Rotation Scheduler
Build a Resource Usage Limiter
Build a Config Drift Detector
Build a Webhook Event Log
Build AI-Powered Search Ranking
Build Feature Usage Analytics
Build Smart Notification Batching
Build Automated Backup Verification
Build an API Error Budget Tracker
Build an API Contract Changelog
Build a Customer Data Export System
Build a Deployment Rollback Manager
Build a Scheduled Report Generator
Build an IP Reputation Scoring System
Build an API Sandbox Environment
Build an Event Bus System
Build a Long-Running Task Tracker
Build a Progressive Web App Shell
Build a User Session Manager
Build a Database Connection Health Monitor
Build a Customer Self-Service Portal
Build a Secrets Scanner
Build a Workflow State Machine
Build a Database Index Advisor
Build Smart Cache Invalidation
Build a Content Versioning System
Build a QR Code Generator Service
Build an API Response Cache Layer
Build a Database Read Replica Router
Build a Session Replay System
Build an AI Image Alt Text Generator
Build an AI Prompt Chain Executor
Build an AI Voice Transcription Service
Build Browser Stealth Automation
Build a Customer Feedback Analyzer
Build a Dark Launch System
Build a Design Editor Canvas
Build GEO-SEO Optimization
Build a GraphQL Federation Gateway
Build a Database Archival System
Build a Serverless Function Deployer
Build a Webhook Debug Tool
Build a Knowledge Graph Builder
Build a Customer Onboarding Checklist
Build an API Health Dashboard
Build a CI/CD Pipeline Orchestrator
Build an API Monetization Platform
Build Web3 Wallet Integration
Build an App Store Screenshot Generator
Build a Context Compression Engine
Build an Agent Security Framework
Build an IoT Device Dashboard
Build a Kubernetes Operator
Build a Social Media Scheduler
Build an Email Deliverability Monitor
Build an SEO Audit Tool
Build a Feature-Rich Discord Bot
Build a Real-Time Multiplayer Game Backend with Rooms and Leaderboards
Build a High-Throughput AI Batch Processing Pipeline
Build a Semantic Cache Layer for LLM Calls

Documentation

Build fast, scalable applications with Redis as a cache, message broker, session store, or real-time data engine.

Setup

Docker (quickstart)

bash
# Redis 7 with persistence
docker run -d --name redis -p 6379:6379 \
  -v redis-data:/data \
  redis:7-alpine redis-server --appendonly yes --requirepass "your-password"

Connection

python
"""redis_client.py — Redis connection with connection pooling."""
import redis

# Single connection
r = redis.Redis(host="localhost", port=6379, password="your-password", db=0,
                decode_responses=True)  # Auto-decode bytes to strings

# Connection pool (recommended for production)
pool = redis.ConnectionPool(
    host="localhost", port=6379, password="your-password",
    max_connections=20,  # Match your app's concurrency
    decode_responses=True,
)
r = redis.Redis(connection_pool=pool)

# Verify connection
r.ping()  # Returns True
javascript
// redis-client.js — Node.js connection with ioredis
import Redis from 'ioredis';
const redis = new Redis({
  host: 'localhost', port: 6379, password: 'your-password',
  maxRetriesPerRequest: 3,
  retryStrategy: (times) => Math.min(times * 50, 2000),
});

Caching Patterns

Cache-Aside (most common)

python
"""cache_aside.py — Cache-aside pattern with automatic expiration."""
import json

def get_user(user_id: int) -> dict:
    """Fetch user from cache, falling back to database.

    Args:
        user_id: The user's ID.

    Returns:
        User dict from cache or database.
    """
    cache_key = f"user:{user_id}"
    cached = r.get(cache_key)
    if cached:
        return json.loads(cached)

    # Cache miss — fetch from database
    user = db.query("SELECT * FROM users WHERE id = %s", user_id)
    r.setex(cache_key, 3600, json.dumps(user))  # Cache for 1 hour
    return user

def update_user(user_id: int, data: dict):
    """Update user in database and invalidate cache.

    Args:
        user_id: The user's ID.
        data: Fields to update.
    """
    db.execute("UPDATE users SET ... WHERE id = %s", user_id)
    r.delete(f"user:{user_id}")  # Invalidate — next read repopulates

Write-Through Cache

python
"""write_through.py — Write-through: update cache and DB together."""

def save_product(product_id: str, data: dict):
    """Save product to both database and cache atomically.

    Args:
        product_id: Product identifier.
        data: Product data dict.
    """
    # Write to DB first (source of truth)
    db.execute("INSERT INTO products ... ON CONFLICT UPDATE ...", data)

    # Then update cache
    r.setex(f"product:{product_id}", 7200, json.dumps(data))  # 2h TTL

Session Storage

python
"""session_store.py — HTTP session storage in Redis."""
import secrets, json

SESSION_TTL = 86400  # 24 hours

def create_session(user_id: int, metadata: dict = None) -> str:
    """Create a new session and return the session token.

    Args:
        user_id: Authenticated user's ID.
        metadata: Optional session metadata (IP, user-agent, etc.).
    """
    token = secrets.token_urlsafe(32)
    session_data = {"user_id": user_id, "created_at": time.time(), **(metadata or {})}
    r.setex(f"session:{token}", SESSION_TTL, json.dumps(session_data))
    # Track active sessions per user for "log out everywhere"
    r.sadd(f"user_sessions:{user_id}", token)
    return token

def get_session(token: str) -> dict | None:
    """Validate and return session data, extending TTL on access.

    Args:
        token: Session token from cookie/header.
    """
    data = r.get(f"session:{token}")
    if not data:
        return None
    r.expire(f"session:{token}", SESSION_TTL)  # Sliding expiration
    return json.loads(data)

def destroy_all_sessions(user_id: int):
    """Invalidate all sessions for a user (password change, security breach).

    Args:
        user_id: The user whose sessions to destroy.
    """
    tokens = r.smembers(f"user_sessions:{user_id}")
    if tokens:
        r.delete(*[f"session:{t}" for t in tokens])
    r.delete(f"user_sessions:{user_id}")

Rate Limiting

Sliding Window

python
"""rate_limiter.py — Sliding window rate limiter using sorted sets."""
import time

def is_rate_limited(key: str, limit: int, window_seconds: int) -> bool:
    """Check if a key has exceeded its rate limit.

    Args:
        key: Identifier (e.g., IP address, API key, user ID).
        limit: Maximum requests allowed in the window.
        window_seconds: Window size in seconds.

    Returns:
        True if rate limited, False if request is allowed.
    """
    now = time.time()
    window_start = now - window_seconds
    pipe = r.pipeline()
    rk = f"ratelimit:{key}"

    pipe.zremrangebyscore(rk, 0, window_start)  # Remove expired entries
    pipe.zadd(rk, {f"{now}": now})              # Add current request
    pipe.zcard(rk)                               # Count requests in window
    pipe.expire(rk, window_seconds)              # Auto-cleanup

    results = pipe.execute()
    count = results[2]
    return count > limit

For smoother rate limiting, consider a token bucket implementation using a Lua script that tracks tokens and refill timestamps in a Redis hash.

Pub/Sub

python
"""pubsub.py — Real-time messaging with Redis pub/sub."""
import threading

def publish_event(channel: str, event: dict):
    """Publish an event to a channel.

    Args:
        channel: Channel name (e.g., "notifications:user:123").
        event: Event data dict — serialized to JSON.
    """
    r.publish(channel, json.dumps(event))

def subscribe_to_events(pattern: str, callback):
    """Subscribe to channels matching a pattern.

    Args:
        pattern: Glob pattern (e.g., "notifications:*").
        callback: Function called with (channel, data) for each message.
    """
    ps = r.pubsub()
    ps.psubscribe(pattern)

    def listener():
        for msg in ps.listen():
            if msg["type"] == "pmessage":
                callback(msg["channel"], json.loads(msg["data"]))

    thread = threading.Thread(target=listener, daemon=True)
    thread.start()
    return ps  # Return for cleanup: ps.punsubscribe()

Streams (persistent messaging)

Unlike pub/sub, streams persist messages and support consumer groups. Use XADD to add events, XGROUP CREATE to create consumer groups, and XREADGROUP/XACK to consume and acknowledge messages. Set maxlen on XADD to cap stream memory.

Distributed Locking

python
"""distributed_lock.py — Distributed lock using Redis (Redlock pattern)."""

def acquire_lock(name: str, timeout: int = 10) -> str | None:
    """Acquire a distributed lock.

    Args:
        name: Lock name (e.g., "process:invoice:12345").
        timeout: Lock expiration in seconds (prevents deadlocks).

    Returns:
        Lock token if acquired, None if already held.
    """
    token = secrets.token_urlsafe(16)
    acquired = r.set(f"lock:{name}", token, nx=True, ex=timeout)
    return token if acquired else None

# Lua script ensures atomic check-and-delete (only owner can release)
RELEASE_SCRIPT = """
if redis.call('GET', KEYS[1]) == ARGV[1] then
    return redis.call('DEL', KEYS[1])
end
return 0
"""

def release_lock(name: str, token: str) -> bool:
    """Release a lock (only if we own it).

    Args:
        name: Lock name.
        token: Token returned by acquire_lock.
    """
    return r.eval(RELEASE_SCRIPT, 1, f"lock:{name}", token) == 1

Leaderboards

Use sorted sets (ZADD, ZREVRANGE, ZREVRANK) for real-time leaderboards. ZADD sets scores, ZREVRANGE returns top N entries, and ZREVRANK gets a member's rank.

Production Configuration

Key settings: maxmemory 2gb, maxmemory-policy allkeys-lru, appendonly yes, appendfsync everysec. Always set a maxmemory limit to prevent out-of-memory crashes.

Guidelines

  • Use SETEX/SET ... EX with TTLs for all cache keys -- keys without expiration leak memory
  • Pipeline multiple commands when doing batch operations -- reduces round trips
  • Use Lua scripts for atomic multi-step operations (check-and-set, compare-and-delete)
  • Prefer Streams over pub/sub when message persistence matters -- pub/sub drops messages if no subscriber is listening
  • Key naming convention: use colons as separators (user:123:profile, cache:product:456)
  • Monitor memory usage with INFO memory -- Redis is in-memory, running out kills the process
  • Use SCAN instead of KEYS * in production -- KEYS blocks the server on large datasets
  • Connection pooling is essential -- creating a new connection per request adds 1-2ms latency
  • Redis is single-threaded for commands -- one slow Lua script blocks everything