Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

เพิ่มประสิทธิภาพ Laravel ด้วย Serverless Redis: คู่มือปฏิบัติจริง

บทนำ

Laravel เป็น PHP Framework ยอดนิยมสำหรับสร้าง Web Applications ที่ Scalable และ High-Performance

ในบทความนี้ เราจะเรียนรู้วิธีใช้ Serverless Redis เพื่อ Scale Laravel Applications โดยเก็บ Laravel Session และ Cache Data ใน Serverless Redis Instance

ข้อกำหนดเบื้องต้น

ก่อนเริ่ม คุณต้องมี:

ภาพรวมสถาปัตยกรรม

แทนที่จะรัน Laravel บน Single Server ลองพิจารณาสถานการณ์นี้:

  • Laravel Application รันบน Web Servers 2 ตัว
  • Load Balancer เดียวจัดการ Routing Requests ไปยัง Web Servers ทั้ง 2
  • MySQL Database Server สำหรับเก็บ Application Data
  • Upstash Serverless Redis Cluster รับผิดชอบ Cache Data และเก็บ User Sessions

Diagram:

เพิ่มประสิทธิภาพ Laravel ด้วย Serverless Redis: คู่มือปฏิบัติจริง

Serverless Redis คืออะไร?

Serverless Redis เป็น Fully Managed Database-as-a-Service ที่คิดค่าบริการต่อ Command (Per-command Pricing) คุณจ่ายแค่สิ่งที่ใช้จริง

วิธีนี้คุณไม่ต้อง Over-provision Servers และ Scale Application ได้ตามต้องการ

ทำไมต้อง Serverless Redis?

โดย Default Laravel จะเก็บ User Sessions ใน Files บน Disk ของ Web Server หาก Load Balancer ส่ง Request ไป Server อื่น User Session จะหายไป

นี่คือเหตุผลที่ต้องมีที่เก็บ User Sessions และ Application Cache แบบ Centralized เพื่อให้ Share ระหว่าง Requests และข้าม Multiple Servers ได้ ไม่หายเมื่อ Load Balancer ส่ง Request ไป Server อื่น

แน่นอน คุณสามารถใช้ Database เก็บ Sessions และ Cache ได้ แต่เพื่อ Performance ที่ดีกว่า แนะนำให้ใช้ Redis ดูรายละเอียดประโยชน์ด้าน Performance ได้ที่ Which is the best Laravel cache driver for performance?

Horizontal Scaling vs Vertical Scaling

สรุปความต่างระหว่าง Horizontal และ Vertical Scaling:

  • Vertical Scaling (Scale-up): เพิ่ม Resources ให้ Server เดียว เช่น CPU, RAM, Disk
  • Horizontal Scaling (Scale-out): เพิ่ม Servers มากขึ้นเพื่อรับ Requests

ตัวอย่างง่าย:

เพิ่มประสิทธิภาพ Laravel ด้วย Serverless Redis: คู่มือปฏิบัติจริง

เมื่อ Scale แบบ Horizontal สำคัญที่ต้องจัดการ User Sessions และ Cache Data แบบ Scalable

สร้าง Serverless Redis Cluster

กับ Upstash สร้าง Serverless Redis Cluster ได้ใน 30 วินาที:

  • Login Upstash Account
  • กดปุ่ม Create Database
  • ใส่ชื่อ Redis Cluster และเลือก Region
  • กด Create

เสร็จแล้ว! มี Serverless Redis Cluster พร้อมใช้งาน

จด Endpoint, Password และ Port ของ Redis Cluster ไว้

ตั้งค่า Laravel กับ Serverless Redis

ตอนนี้มี Serverless Redis Cluster แล้ว ตั้งค่า Laravel ใช้ได้เหมือน Redis Instance ปกติ

ติดตั้ง Predis Package

ก่อนหน้านี้ใช้ PHP Redis Extension แต่ตอนนี้ใช้ Predis Package แทนได้

composer require predis/predis

ไปที่ .env ของ Laravel Project อัปเดตบรรทัดต่อไปนี้:

REDIS_HOST=your_upstash_redis_endpoint
REDIS_PASSWORD=your_upstash_redis_password
REDIS_PORT=your_upstash_redis_port

ขณะเปลี่ยน Redis Details ต้องเปลี่ยน Cache Driver และ Session Driver เป็น redis ด้วย:

CACHE_DRIVER=redis
SESSION_DRIVER=redis

สุดท้าย Clear Config Cache:

php artisan config:clear

ตอนนี้ Laravel Application จะใช้ Serverless Redis Cluster เก็บ Cache และ Session Data

ข้อสรุป

ใช้ Laravel กับ Serverless Redis เป็นวิธียอดเยี่ยมในการ Scale Application แม้รัน Laravel บน Kubernetes Cluster ก็ยังใช้ Serverless Redis Cluster เก็บ User Sessions และ Cache Data แบบ Scalable ได้

ข้อมูลเพิ่มเติมเกี่ยวกับ Upstash ดูที่ Documentation

ข้อมูลเพิ่มเติมเกี่ยวกับการ Scale Laravel Application:

  • How to Set Up a Scalable Laravel 6 Application using Managed Databases and Object Storage