เพิ่มความตอบสนองด้วยแคชฝั่งไคลเอนต์ของ Redis
(gosuda.org)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 ความคิดเห็น
👀