161 lines
5 KiB
Text
161 lines
5 KiB
Text
# Maple Infrastructure - Redis Production Configuration
|
|
# This file is used by the Redis Docker container
|
|
|
|
# ==============================================================================
|
|
# NETWORK
|
|
# ==============================================================================
|
|
# Bind to all interfaces (Docker networking handles access control)
|
|
bind 0.0.0.0
|
|
|
|
# Default Redis port
|
|
port 6379
|
|
|
|
# Protected mode disabled (we rely on Docker network isolation)
|
|
# Only containers on mapleopentech-prod overlay network can access
|
|
protected-mode no
|
|
|
|
# ==============================================================================
|
|
# PERSISTENCE
|
|
# ==============================================================================
|
|
# RDB Snapshots (background saves)
|
|
# Save if at least 1 key changed in 900 seconds (15 min)
|
|
save 900 1
|
|
|
|
# Save if at least 10 keys changed in 300 seconds (5 min)
|
|
save 300 10
|
|
|
|
# Save if at least 10000 keys changed in 60 seconds (1 min)
|
|
save 60 10000
|
|
|
|
# Stop writes if RDB snapshot fails (data safety)
|
|
stop-writes-on-bgsave-error yes
|
|
|
|
# Compress RDB files
|
|
rdbcompression yes
|
|
|
|
# Checksum RDB files
|
|
rdbchecksum yes
|
|
|
|
# RDB filename
|
|
dbfilename dump.rdb
|
|
|
|
# Working directory for RDB and AOF files
|
|
dir /data
|
|
|
|
# ==============================================================================
|
|
# APPEND-ONLY FILE (AOF) - Additional Durability
|
|
# ==============================================================================
|
|
# Enable AOF for better durability
|
|
appendonly yes
|
|
|
|
# AOF filename
|
|
appendfilename "appendonly.aof"
|
|
|
|
# Sync strategy: fsync every second (good balance)
|
|
# Options: always, everysec, no
|
|
appendfsync everysec
|
|
|
|
# Don't fsync during rewrite (prevents blocking)
|
|
no-appendfsync-on-rewrite no
|
|
|
|
# Auto-rewrite AOF when it grows 100% larger
|
|
auto-aof-rewrite-percentage 100
|
|
auto-aof-rewrite-min-size 64mb
|
|
|
|
# ==============================================================================
|
|
# MEMORY MANAGEMENT
|
|
# ==============================================================================
|
|
# Maximum memory (adjust based on your droplet RAM)
|
|
# For 2GB droplet with Redis only: 1.5GB safe limit
|
|
# For 2GB droplet with other services: 512MB-1GB
|
|
maxmemory 512mb
|
|
|
|
# Eviction policy when maxmemory reached
|
|
# allkeys-lru: Evict least recently used keys (good for cache)
|
|
# volatile-lru: Only evict keys with TTL set
|
|
# noeviction: Return errors when memory limit reached
|
|
maxmemory-policy allkeys-lru
|
|
|
|
# LRU/LFU algorithm precision (higher = more accurate, more CPU)
|
|
maxmemory-samples 5
|
|
|
|
# ==============================================================================
|
|
# SECURITY
|
|
# ==============================================================================
|
|
# Require password for all operations
|
|
# IMPORTANT: This is loaded from Docker secret in production
|
|
# requirepass will be set via command line argument
|
|
|
|
# Disable dangerous commands in production
|
|
rename-command FLUSHDB ""
|
|
rename-command FLUSHALL ""
|
|
rename-command CONFIG ""
|
|
|
|
# ==============================================================================
|
|
# LOGGING
|
|
# ==============================================================================
|
|
# Log level: debug, verbose, notice, warning
|
|
loglevel notice
|
|
|
|
# Log to stdout (Docker captures logs)
|
|
logfile ""
|
|
|
|
# ==============================================================================
|
|
# DATABASES
|
|
# ==============================================================================
|
|
# Number of databases (default 16)
|
|
databases 16
|
|
|
|
# ==============================================================================
|
|
# PERFORMANCE TUNING
|
|
# ==============================================================================
|
|
# Timeout for idle client connections (0 = disabled)
|
|
timeout 300
|
|
|
|
# TCP keepalive
|
|
tcp-keepalive 300
|
|
|
|
# Number of I/O threads (use for high load)
|
|
# 0 = auto-detect, 1 = single-threaded
|
|
io-threads 2
|
|
io-threads-do-reads yes
|
|
|
|
# ==============================================================================
|
|
# SLOW LOG
|
|
# ==============================================================================
|
|
# Log queries slower than 10ms
|
|
slowlog-log-slower-than 10000
|
|
|
|
# Keep last 128 slow queries
|
|
slowlog-max-len 128
|
|
|
|
# ==============================================================================
|
|
# ADVANCED
|
|
# ==============================================================================
|
|
# Enable active rehashing
|
|
activerehashing yes
|
|
|
|
# Client output buffer limits
|
|
client-output-buffer-limit normal 0 0 0
|
|
client-output-buffer-limit replica 256mb 64mb 60
|
|
client-output-buffer-limit pubsub 32mb 8mb 60
|
|
|
|
# Max number of clients
|
|
maxclients 10000
|
|
|
|
# ==============================================================================
|
|
# NOTES
|
|
# ==============================================================================
|
|
# This configuration is optimized for:
|
|
# - Production caching workload
|
|
# - 2GB RAM droplet
|
|
# - Single Redis instance (not clustered)
|
|
# - AOF + RDB persistence
|
|
# - Docker Swarm networking
|
|
#
|
|
# Monitoring commands:
|
|
# - INFO: Get server stats
|
|
# - SLOWLOG GET: View slow queries
|
|
# - MEMORY STATS: Memory usage breakdown
|
|
# - CLIENT LIST: Connected clients
|
|
# ==============================================================================
|