บทนำ
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