# 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 # ==============================================================================