วิธีใช้ Redis Cache เพื่อเร่งความเร็วระบบ

Sharing is caring!

บทนำ

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 Cache1 – 5 ms

สรุป

Redis คือเครื่องมือที่ช่วยให้ระบบของคุณเร็วขึ้นแบบชัดเจน โดยเฉพาะในส่วนที่มีการอ่านข้อมูลซ้ำ ๆ บ่อย ๆ การใช้ Redis อย่างเหมาะสมจะช่วยลดภาระของฐานข้อมูลหลัก เพิ่มประสบการณ์ผู้ใช้ และรองรับการ scale ได้ดีขึ้น

บทความนี้ใช้เวลาอ่าน 10–15 นาที โดยทีมงาน poolsawat.com

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *