0Pricing
PHP Academy · บทเรียน

Memcached สำหรับการแคชเซสชันและออบเจ็กต์

ใช้ Memcached เป็นที่จัดเก็บออบเจ็กต์ PHP ในหน่วยความจำแบบกระจาย

Memcached สำหรับการแคชเซสชันและออบเจ็กต์ เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

Memcached คืออะไร

Memcached คือคลังข้อมูลคีย์-ค่าในหน่วยความจำแบบกระจายที่มีประสิทธิภาพสูง นิยมใช้สำหรับแคชผลลัพธ์การค้นหาฐานข้อมูลและข้อมูลเซสชันในแอปพลิเคชัน PHP

การติดตั้ง

ติดตั้งเซิร์ฟเวอร์ Memcached และส่วนขยาย PHP

# Ubuntu/Debian:
$ apt install memcached php-memcached
$ service memcached start

# Verify:
$ php -m | grep memcached

การเชื่อมต่อ Memcached

สร้างอินสแตนซ์ Memcached และเพิ่มเซิร์ฟเวอร์อย่างน้อยหนึ่งตัว

<?php
$mc = new Memcached();
$mc->addServer("127.0.0.1", 11211);

// Multiple servers (distributed caching):
$mc->addServers([
    ["192.168.1.10", 11211],
    ["192.168.1.11", 11211],
]);

การดำเนินการแคชพื้นฐาน

ตั้งค่า อ่าน ลบ และแทนที่รายการแคช

<?php
// Set with TTL:
$mc->set("product:1", $productData, 600); // 10 min

// Get:
$product = $mc->get("product:1");
if ($mc->getResultCode() === Memcached::RES_NOTFOUND) {
    $product = fetchFromDB(1);
    $mc->set("product:1", $product, 600);
}

// Delete:
$mc->delete("product:1");

การจัดเก็บเซสชันด้วย Memcached

จัดเก็บเซสชัน PHP ใน Memcached เพื่อให้เซิร์ฟเวอร์เว็บหลายตัวเข้าถึงข้อมูลร่วมกันได้อย่างรวดเร็ว

# php.ini:
session.save_handler = memcached
session.save_path    = "127.0.0.1:11211"

การผสานรวม Memcached กับ Laravel

กำหนดค่าและใช้ Memcached เป็นไดรเวอร์แคชของ Laravel

# .env
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1

// Usage is identical to Redis via Cache facade:
Cache::put("key", $value, 300);
$value = Cache::get("key");

Memcached เทียบกับ Redis

Memcached: เรียบง่าย ทำงานหลายเธรด และอยู่ในหน่วยความจำทั้งหมด (ไม่มีการเก็บข้อมูลถาวร) Redis: มีชนิดข้อมูลหลากหลายกว่า รองรับการเก็บข้อมูลถาวรแบบเลือกใช้ได้ (AOF/RDB) การเผยแพร่/สมัครรับ และคลัสเตอร์ สำหรับการแคชอย่างเดียว ทั้งสองระบบมีประสิทธิภาพใกล้เคียงกัน โดยทั่วไป Redis เป็นตัวเลือกที่ต้องการสำหรับโครงการใหม่

การแคชแบบกระจาย

Memcached แจกจ่ายคีย์ไปยังเซิร์ฟเวอร์หลายตัวโดยใช้การแฮชแบบสอดคล้องในตัว ระบบจึงขยายตามแนวนอนได้เมื่อปริมาณการใช้งานเพิ่มขึ้น

CAS แบบอะตอมิก (เปรียบเทียบและสลับค่า)

Memcached รองรับการดำเนินการ CAS เพื่ออัปเดตค่าอย่างปลอดภัย เฉพาะเมื่อไม่มีไคลเอ็นต์อื่นเปลี่ยนค่านั้นนับจากที่คุณอ่านครั้งล่าสุด

<?php
$mc->get("counter", null, $cas);
$mc->cas($cas, "counter", $newValue, 60);

ข้อจำกัดของ TTL

TTL ของ Memcached กำหนดได้สูงสุด 30 วัน ค่าที่มีขนาดใหญ่กว่า ~1 MB จะถูกปฏิเสธ ควรรักษาค่าแคชให้มีขนาดเล็กและทำให้เป็นข้อมูลอนุกรมอย่างมีประสิทธิภาพ

การตรวจสอบ

ใช้ memcached-tool 127.0.0.1:11211 stats เพื่อตรวจสอบอัตราการพบแคช การใช้หน่วยความจำ และจำนวนรายการที่ถูกนำออกจากแคช อัตราการพบแคชต่ำหรือจำนวนรายการที่ถูกนำออกสูงแสดงว่าแคชมีขนาดเล็กเกินไป

สรุป

Memcached เหมาะอย่างยิ่งสำหรับการแคชอ็อบเจ็กต์และเซสชันแบบกระจายที่เรียบง่าย ใน Laravel ให้ตั้งค่า CACHE_DRIVER=memcached หากใช้งานจริงและต้องการฟีเจอร์ที่หลากหลายกว่า ให้เลือก Redis

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ความแตกต่างสำคัญประการหนึ่งระหว่าง Memcached กับ Redis คืออะไร

คำถามที่พบบ่อย

บทเรียน “Memcached สำหรับการแคชเซสชันและออบเจ็กต์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Memcached สำหรับการแคชเซสชันและออบเจ็กต์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Memcached สำหรับการแคชเซสชันและออบเจ็กต์”

ใช้ Memcached เป็นที่จัดเก็บออบเจ็กต์ PHP ในหน่วยความจำแบบกระจาย คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “Memcached สำหรับการแคชเซสชันและออบเจ็กต์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดการแคชจึงสำคัญใน PHP
  2. Redis ในฐานะแบ็กเอนด์แคชของ PHP
  3. Memcached สำหรับการแคชเซสชันและออบเจ็กต์
  4. รูปแบบการทำให้แคชไม่ถูกต้อง
← กลับไปที่ PHP Academy