บทนำ
Redis (Remote Dictionary Server) เป็นเครื่องมือที่นักพัฒนานิยมใช้กันอย่างแพร่หลายในการ cache ข้อมูล เพื่อลดเวลาในการเข้าถึงฐานข้อมูลและเพิ่มประสิทธิภาพของระบบแบบทันตาเห็น
ในบทความนี้เราจะมาดูว่า Redis คืออะไร เหมาะกับสถานการณ์แบบไหน และจะนำมาใช้กับระบบของเราอย่างไรให้เกิดประโยชน์สูงสุด พร้อมตัวอย่างโค้ดใช้งานจริง
Redis คืออะไร?
Redis เป็นฐานข้อมูลแบบ In-Memory (อยู่ใน RAM) ที่ทำงานเร็วมาก ใช้โครงสร้างข้อมูลแบบ Key-Value Store สามารถใช้ได้ทั้งสำหรับ Cache, Message Queue และ Real-time Analytics

ข้อดีของการใช้ Redis Cache
- ⚡ เร็วมาก เพราะอยู่บน RAM
- 🔁 ลดจำนวนการ Query ไปยัง Database
- 📦 เก็บข้อมูลแบบ Key-Value ใช้งานง่าย
- 📈 เพิ่ม Scalability และ Resilience ให้ระบบ
Use Case ที่เหมาะกับ Redis
- แคชข้อมูลสินค้าที่เปลี่ยนไม่บ่อย เช่น รายการหมวดหมู่
- เก็บ Session ของผู้ใช้งาน
- เก็บ Token หรือ OTP ชั่วคราว
- ระบบ Ranking แบบ Realtime
ติดตั้ง Redis
# Ubuntu/Debian sudo apt update sudo apt install redis # ตรวจสอบสถานะ redis-cli ping # ควรได้ผลลัพธ์ PONG
ติดตั้ง Redis Client ใน Node.js
npm install redis
ตัวอย่างใช้งาน Redis ใน Node.js
import { createClient } from 'redis' const redis = createClient() await redis.connect() // Set ค่า cache await redis.set('product:123', JSON.stringify({ id: 123, name: 'iPhone' }), { EX: 60 // หมดอายุใน 60 วินาที }) // Get ค่า const data = await redis.get('product:123') console.log(JSON.parse(data))
กลยุทธ์ Caching ที่นิยม
- Cache Aside – ดึงจาก Redis ก่อน ถ้าไม่มีค่อย query DB แล้วค่อย set เข้า Redis
- Write Through – ทุกครั้งที่เขียน DB ให้เขียนเข้า Redis ด้วย
- Read Through – ใช้ library เป็นตัวจัดการ cache ให้โดยอัตโนมัติ
ตัวอย่างโค้ด Cache Aside
async function getProduct(id) { const cacheKey = `product:${id}` let product = await redis.get(cacheKey) if (product) return JSON.parse(product) // ถ้าไม่มีใน cache ค่อยดึงจาก DB product = await db.products.findById(id) await redis.set(cacheKey, JSON.stringify(product), { EX: 60 }) return product }
ข้อควรระวัง
- 🧹 อย่าลืมตั้ง Expiry (หมดอายุ) เพื่อไม่ให้ cache เต็ม
- 💥 ควรมี fallback หาก Redis ใช้งานไม่ได้
- 🔒 ควรมีการเข้ารหัสหาก Redis อยู่บน Public Network
เปรียบเทียบเวลาในการโหลด
แหล่งข้อมูล | เวลาเฉลี่ย |
---|---|
Database (PostgreSQL/MySQL) | 100 – 300 ms |
Redis Cache | 1 – 5 ms |
สรุป
Redis คือเครื่องมือที่ช่วยให้ระบบของคุณเร็วขึ้นแบบชัดเจน โดยเฉพาะในส่วนที่มีการอ่านข้อมูลซ้ำ ๆ บ่อย ๆ การใช้ Redis อย่างเหมาะสมจะช่วยลดภาระของฐานข้อมูลหลัก เพิ่มประสบการณ์ผู้ใช้ และรองรับการ scale ได้ดีขึ้น
บทความนี้ใช้เวลาอ่าน 10–15 นาที โดยทีมงาน poolsawat.com