13 คะแนน โดย lemonmint 2024-11-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

Redis นั้นรวดเร็ว แต่การดึงข้อมูลบ่อยครั้งก็สร้างภาระให้กับ API server ได้ โดยเฉพาะในกรณีอย่างข้อมูลเรียลไทม์ที่การอัปเดตเกิดขึ้นไม่สม่ำเสมอแต่ต้องถูกเรียกดูบ่อย จึงจำเป็นต้องมีกลยุทธ์แคชที่มีประสิทธิภาพ

  • ปัญหา: Redis PubSub หรือ Keyspace Notification อาจทำให้ตรรกะในการตรวจจับการอัปเดตและการจัดการข้อความซับซ้อนขึ้น หรือก่อให้เกิดการใช้ทรัพยากรอย่างสิ้นเปลือง

  • ทางแก้: Invalidation Message ที่รองรับตั้งแต่ Redis 6.0 เป็นวิธีที่ให้เซิร์ฟเวอร์จัดการแคชของไคลเอนต์

    • หลังจากที่ไคลเอนต์อ่านคีย์แล้ว หากมีไคลเอนต์อื่นแก้ไขคีย์นั้น Redis จะส่งข้อความอัปเดตเพื่อให้ลบแคชออก
  • การนำไปใช้: ในภาษา Go สามารถใช้ชุด redigo+ristretto หรือไลบรารี rueidis เพื่อใช้ Invalidation Message ได้

    • redigo+ristretto ต้องมีตรรกะแบบกำหนดเองเพิ่มเติม แต่ rueidis สามารถทำได้อย่างง่ายด้วยฟังก์ชัน DoCache
  • ผลลัพธ์: จากการใช้งานจริง ความเร็วในการตอบสนองของ API ดีขึ้นสูงสุด 82% และภาระของ Redis server ก็ลดลงด้วย แม้จะต้องมีการจัดการแคชฝั่งไคลเอนต์ แต่ผลด้านประสิทธิภาพนั้นคุ้มค่ามาก

1 ความคิดเห็น

 
jujumilk3 2024-11-29

👀