--- name: redis description: Redis in-memory cache with persistence and pub/sub metadata: version: "1.0.0" vibestack: main: false metrics-port: 9121 --- # Redis Skill Installs and configures [Redis](https://redis.io/) in-memory data store for caching, pub/sub messaging, and session storage. ## Features - In-memory key-value store - RDB + AOF persistence - Pub/sub messaging - Optional authentication - Memory limit with eviction policy - Auto-registers with Caddy if domain set ## Configuration ### Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `REDIS_PORT` | `6379` | Redis port | | `REDIS_PASSWORD` | (none) | Optional authentication password | | `REDIS_MAXMEMORY` | `100mb` | Memory limit | | `REDIS_MAXMEMORY_POLICY` | `allkeys-lru` | Eviction policy when memory limit reached | | `REDIS_DATA_DIR` | `/data/redis` | Persistence directory | | `REDIS_APPENDONLY` | `yes` | Enable AOF persistence | | `REDIS_SAVE` | `900 1 300 10 60 10000` | RDB save intervals | | `REDIS_DOMAIN` | (none) | Domain for Caddy auto-config | ### Output Variables After starting, the skill exports: | Variable | Example | |----------|---------| | `REDIS_URL` | `redis://:password@localhost:6379` | ## Usage ### As a dependency ```yaml metadata: vibestack: requires: - redis ``` ### Connection ```bash # Connect with redis-cli redis-cli -p 6379 # With authentication redis-cli -p 6379 -a "$REDIS_PASSWORD" # From application REDIS_URL=redis://localhost:6379 # or with auth REDIS_URL=redis://:password@localhost:6379 ``` ### Common Operations ```bash # Set a key redis-cli SET mykey "Hello" # Get a key redis-cli GET mykey # Pub/sub redis-cli SUBSCRIBE mychannel redis-cli PUBLISH mychannel "Hello subscribers!" # Check memory usage redis-cli INFO memory ``` ## Persistence Redis is configured with both RDB snapshots and AOF (Append Only File): - **RDB**: Point-in-time snapshots at configured intervals - **AOF**: Log of all write operations for durability Data is stored in `REDIS_DATA_DIR` (default: `/data/redis`). ## Memory Management When `REDIS_MAXMEMORY` is reached, the `REDIS_MAXMEMORY_POLICY` determines behavior: | Policy | Description | |--------|-------------| | `allkeys-lru` | Evict least recently used keys (default) | | `volatile-lru` | Evict LRU keys with TTL set | | `allkeys-random` | Evict random keys | | `noeviction` | Return errors on write | ## Caddy Integration If the `caddy` skill is present and `REDIS_DOMAIN` is set, Redis will be accessible via HTTPS (useful for Redis Insight or other GUI tools). ## Security For production use: 1. Always set `REDIS_PASSWORD` 2. Restrict network access 3. Use TLS for external connections