Redis
In-memory data store — เร็วมากเพราะข้อมูลอยู่ใน RAM
Data Types
- String
- List
- Stream (รองรับตั้งแต่ v5) — ทำงานเหมือน queue ใน Kafka
Client Libraries สำหรับ Java
- Jedis — Redis client แบบดั้งเดิม
- Lettuce — reactive/async client (นิยมใน Spring Boot ยุคใหม่)
Jedis vs Lettuce
| ด้าน | Jedis | Lettuce |
|---|---|---|
| โมเดลการทำงาน | Blocking / Synchronous | Non-blocking / Asynchronous |
| Thread-safety | ไม่ thread-safe — ต้องใช้ connection pool | Thread-safe — 1 connection share ได้หลาย thread |
| Connection | 1 thread = 1 connection | แชร์ connection ได้ (Netty-based) |
| Reactive | ไม่รองรับ | รองรับ (Project Reactor) |
| Cluster support | รองรับ แต่ manual มากกว่า | รองรับเต็มรูปแบบ auto-reconnect |
| ใช้ resource | กินเยอะกว่า (pool connections) | กินน้อยกว่า |
| เหมาะกับ | app แบบดั้งเดิม, traffic ไม่สูงมาก | app สมัยใหม่, high concurrency, reactive stack |
| Default ใน Spring Boot | ก่อน v2.0 | ตั้งแต่ v2.0 เป็นต้นมา |
Jedis (Synchronous) Lettuce (Asynchronous)
───────────────────── ─────────────────────
Thread 1 → Conn 1 → Redis Thread 1 ─┐
Thread 2 → Conn 2 → Redis Thread 2 ─┼→ Conn (shared) → Redis
Thread 3 → Conn 3 → Redis Thread 3 ─┘
(ต้องมี pool) (1 connection พอ)
สรุป: โปรเจกต์ใหม่ควรใช้ Lettuce เพราะ thread-safe, reactive, และเป็น default ของ Spring Boot ยุคใหม่
Related
- Spring Boot — ใช้ Redis สำหรับ caching บ่อย
- AWS Services Overview — AWS มี ElastiCache เป็น managed Redis