Redis คืออะไร?
Redis (Remote Dictionary Server) คือ In-memory Data Store ความเร็วสูง นิยมใช้เป็น Cache Layer, Session Store, และ Message Queue ให้กับ Application
เริ่ม Redis Container
# รัน Redis พื้นฐาน
docker run -d \
--name redis_server \
-p 6379:6379 \
redis:7-alpine
# รัน Redis พร้อม Persistent Data
docker run -d \
--name redis_server \
-p 6379:6379 \
-v redis_data:/data \
redis:7-alpine redis-server --appendonly yes
Docker Compose สำหรับ Redis
version: '3.8'
services:
redis:
image: redis:7-alpine
container_name: redis_server
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: redis-server --appendonly yes --requirepass "yourpassword"
healthcheck:
test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "yourpassword", "ping"]
interval: 5s
timeout: 3s
retries: 3
volumes:
redis_data:
ตัวเลือก Redis Image
| Image | ขนาด | เหมาะ |
|---|---|---|
| redis:7 | ใหญ่ | Production ทั่วไป |
| redis:7-alpine | เล็ก | แนะนำ เบาและเร็ว |
| redis:7-bullseye | กลาง | ต้องการ Debian tools |
ทดสอบ Redis
# เข้า Redis CLI
docker exec -it redis_server redis-cli
# ถ้ามี password
docker exec -it redis_server redis-cli -a yourpassword
# ทดสอบบันทึก/ดึงค่า
SET mykey "Hello Redis"
GET mykey
# ตรวจ ping
PING
# ผล: PONG
ใช้งานร่วมกับ Laravel
version: '3.8'
services:
app:
image: mylaravel:latest
depends_on:
redis:
condition: service_healthy
mysql:
condition: service_healthy
environment:
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: yourpassword
CACHE_DRIVER: redis
SESSION_DRIVER: redis
QUEUE_DRIVER: redis
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- redis_data:/data
command: redis-server --appendonly yes --requirepass yourpassword
healthcheck:
test: ["CMD", "redis-cli", "-a", "yourpassword", "ping"]
interval: 5s
timeout: 3s
retries: 3
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: laravel_db
volumes:
redis_data:
Redis Persistence สองรูปแบบ
Redis มีวิธีเก็บข้อมูลลงดิสก์ 2 วิธี:
- RDB (Snapshotting) — บันทึก snapshot ทุก N วินาที เหมาะสำหรับ Cache ทั่วไป
- AOF (Append Only File) — บันทึกทุกคำสั่ง Write เหมาะสำหรับ Session/Queue ที่ต้องการความน่าเชื่อถือสูง
เปิดใช้ AOF ด้วย flag --appendonly yes
Monitor Redis
# ดูสถิติ Redis
docker exec -it redis_server redis-cli info
# ดูการใช้งาน Memory
docker exec -it redis_server redis-cli info memory
# Monitor command แบบ real-time
docker exec -it redis_server redis-cli monitor
Redis สำหรับ Queue Worker (Laravel)
queue:
image: mylaravel:latest
command: php artisan queue:work --sleep=3 --tries=3
restart: unless-stopped
depends_on:
redis:
condition: service_healthy
environment:
QUEUE_DRIVER: redis
REDIS_HOST: redis
สรุป
Redis บน Docker ติดตั้งง่ายมาก ใช้ --appendonly yes เพื่อเก็บข้อมูลไว้หลัง Container เริ่มใหม่ และตั้ง password เสมอสำหรับ Production Environment

