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

ด้านJedisLettuce
โมเดลการทำงานBlocking / SynchronousNon-blocking / Asynchronous
Thread-safetyไม่ thread-safe — ต้องใช้ connection poolThread-safe — 1 connection share ได้หลาย thread
Connection1 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 ยุคใหม่