Complete documentation refactoring with 57 service docs
- Refactored README.md, getting-started.md, quick-reference.md - Enhanced setup-homelab.sh with 9-step automated process - Created services-overview.md with all stacks - Added comprehensive documentation for 57 services in docs/service-docs/ - All services include: overview, configuration, resources, educational content - Coverage: Core, Infrastructure, Dashboards, Media, Media-Extended, Home Assistant, Productivity, Utilities, Monitoring, Development stacks - Educational focus with links to tutorials, videos, and guides
This commit is contained in:
213
docs/service-docs/redis.md
Normal file
213
docs/service-docs/redis.md
Normal file
@@ -0,0 +1,213 @@
|
||||
# Redis - In-Memory Cache
|
||||
|
||||
## Table of Contents
|
||||
- [Overview](#overview)
|
||||
- [What is Redis?](#what-is-redis)
|
||||
- [Why Use Redis?](#why-use-redis)
|
||||
- [Configuration in AI-Homelab](#configuration-in-ai-homelab)
|
||||
- [Official Resources](#official-resources)
|
||||
- [Redis Instances](#redis-instances)
|
||||
|
||||
## Overview
|
||||
|
||||
**Category:** In-Memory Data Store
|
||||
**Docker Image:** [redis](https://hub.docker.com/_/redis)
|
||||
**Default Stack:** `development.yml` and others
|
||||
**Ports:** 6379 (internal)
|
||||
|
||||
## What is Redis?
|
||||
|
||||
Redis (Remote Dictionary Server) is an in-memory data structure store used as a cache, message broker, and database. It's incredibly fast because data is stored in RAM, making it perfect for caching, sessions, queues, and real-time applications.
|
||||
|
||||
### Key Features
|
||||
- **In-Memory:** Microsecond latency
|
||||
- **Data Structures:** Strings, lists, sets, hashes, etc.
|
||||
- **Persistence:** Optional disk writes
|
||||
- **Pub/Sub:** Message broker
|
||||
- **Atomic Operations:** Thread-safe operations
|
||||
- **Replication:** Master-slave
|
||||
- **Lua Scripting:** Server-side scripts
|
||||
- **Free & Open Source:** BSD license
|
||||
|
||||
## Why Use Redis?
|
||||
|
||||
1. **Speed:** Extremely fast (in RAM)
|
||||
2. **Versatile:** Cache, queue, pub/sub, database
|
||||
3. **Simple:** Easy to use
|
||||
4. **Reliable:** Battle-tested
|
||||
5. **Rich Data Types:** More than key-value
|
||||
6. **Atomic:** Safe concurrent access
|
||||
7. **Popular:** Wide adoption
|
||||
|
||||
## Configuration in AI-Homelab
|
||||
|
||||
AI-Homelab uses Redis for caching and session storage in multiple applications.
|
||||
|
||||
## Official Resources
|
||||
|
||||
- **Website:** https://redis.io
|
||||
- **Documentation:** https://redis.io/docs
|
||||
- **Commands:** https://redis.io/commands
|
||||
|
||||
## Redis Instances
|
||||
|
||||
### Authentik Redis (authentik-redis)
|
||||
|
||||
```yaml
|
||||
authentik-redis:
|
||||
image: redis:alpine
|
||||
container_name: authentik-redis
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik-network
|
||||
command: --save 60 1 --loglevel warning
|
||||
volumes:
|
||||
- /opt/stacks/infrastructure/authentik-redis/data:/data
|
||||
```
|
||||
|
||||
**Purpose:** Authentik SSO caching and sessions
|
||||
**Location:** `/opt/stacks/infrastructure/authentik-redis/data`
|
||||
|
||||
### GitLab Redis (gitlab-redis)
|
||||
|
||||
```yaml
|
||||
gitlab-redis:
|
||||
image: redis:alpine
|
||||
container_name: gitlab-redis
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik-network
|
||||
command: --save 60 1 --loglevel warning
|
||||
volumes:
|
||||
- /opt/stacks/development/gitlab-redis/data:/data
|
||||
```
|
||||
|
||||
**Purpose:** GitLab caching and background jobs
|
||||
**Location:** `/opt/stacks/development/gitlab-redis/data`
|
||||
|
||||
### Development Redis (redis)
|
||||
|
||||
```yaml
|
||||
redis:
|
||||
image: redis:alpine
|
||||
container_name: redis
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik-network
|
||||
ports:
|
||||
- "6379:6379"
|
||||
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}
|
||||
volumes:
|
||||
- /opt/stacks/development/redis/data:/data
|
||||
```
|
||||
|
||||
**Purpose:** General development caching
|
||||
**Location:** `/opt/stacks/development/redis/data`
|
||||
|
||||
## Management
|
||||
|
||||
### Access Redis CLI
|
||||
|
||||
```bash
|
||||
# Connect to Redis
|
||||
docker exec -it redis redis-cli
|
||||
|
||||
# With password
|
||||
docker exec -it redis redis-cli -a your_password
|
||||
|
||||
# Or authenticate after connecting
|
||||
AUTH your_password
|
||||
```
|
||||
|
||||
### Common Commands
|
||||
|
||||
```redis
|
||||
# Set key
|
||||
SET mykey "Hello"
|
||||
|
||||
# Get key
|
||||
GET mykey
|
||||
|
||||
# Set with expiration (seconds)
|
||||
SETEX mykey 60 "expires in 60 seconds"
|
||||
|
||||
# List all keys
|
||||
KEYS *
|
||||
|
||||
# Delete key
|
||||
DEL mykey
|
||||
|
||||
# Check if key exists
|
||||
EXISTS mykey
|
||||
|
||||
# Get key type
|
||||
TYPE mykey
|
||||
|
||||
# Flush all data (careful!)
|
||||
FLUSHALL
|
||||
|
||||
# Get info
|
||||
INFO
|
||||
```
|
||||
|
||||
### Monitor Activity
|
||||
|
||||
```bash
|
||||
# Monitor commands in real-time
|
||||
docker exec -it redis redis-cli MONITOR
|
||||
|
||||
# Get statistics
|
||||
docker exec -it redis redis-cli INFO stats
|
||||
```
|
||||
|
||||
### Backup Redis
|
||||
|
||||
```bash
|
||||
# Redis automatically saves to dump.rdb
|
||||
# Just backup the data volume
|
||||
tar -czf redis-backup.tar.gz /opt/stacks/development/redis/data/
|
||||
|
||||
# Force save now
|
||||
docker exec redis redis-cli SAVE
|
||||
```
|
||||
|
||||
## Summary
|
||||
|
||||
Redis provides in-memory storage offering:
|
||||
- Ultra-fast caching
|
||||
- Session storage
|
||||
- Message queuing (pub/sub)
|
||||
- Real-time operations
|
||||
- Rich data structures
|
||||
- Persistence options
|
||||
- Atomic operations
|
||||
- Free and open-source
|
||||
|
||||
**Perfect for:**
|
||||
- Application caching
|
||||
- Session storage
|
||||
- Real-time analytics
|
||||
- Message queues
|
||||
- Leaderboards
|
||||
- Rate limiting
|
||||
- Pub/sub messaging
|
||||
|
||||
**Key Points:**
|
||||
- In-memory (very fast)
|
||||
- Data persists to disk optionally
|
||||
- Multiple data structures
|
||||
- Simple key-value interface
|
||||
- Use password protection
|
||||
- Low resource usage
|
||||
- Alpine image is tiny
|
||||
|
||||
**Remember:**
|
||||
- Set password (--requirepass)
|
||||
- Data stored in RAM
|
||||
- Configure persistence
|
||||
- Monitor memory usage
|
||||
- Backup dump.rdb file
|
||||
- Use for temporary data
|
||||
- Not a full database replacement
|
||||
|
||||
Redis accelerates your applications with caching!
|
||||
Reference in New Issue
Block a user