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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดการแคชจึงสำคัญใน PHP
- Redis ในฐานะแบ็กเอนด์แคชของ PHP
- Memcached สำหรับการแคชเซสชันและออบเจ็กต์
- รูปแบบการทำให้แคชไม่ถูกต้อง