Memcached là một hệ thống lưu trữ dữ liệu tạm thời (cache) trong bộ nhớ RAM, thường được sử dụng để tăng hiệu suất của các ứng dụng web bằng cách giảm số lần truy cập cơ sở dữ liệu hoặc các nguồn dữ liệu chậm khác.
Lưu dữ liệu dạng key-value (giống như một bảng tra cứu).
Lưu trong RAM, nên rất nhanh.
Được dùng để cache:
Kết quả truy vấn cơ sở dữ liệu
HTML đã render
Session
Object serialized...
Giả sử website bạn có 1 bài viết được truy vấn hàng ngàn lần mỗi ngày. Thay vì truy vấn lại MySQL mỗi lần, bạn:
Lưu nội dung bài viết vào Memcached sau lần truy vấn đầu.
Những lần sau, bạn lấy từ Memcached, không cần truy vấn lại.
Lợi ích | Chi tiết |
---|---|
⚡ Tăng tốc | Truy xuất RAM nhanh hơn nhiều so với truy vấn DB |
📉 Giảm tải DB | Giảm lượng truy vấn MySQL, PostgreSQL, v.v. |
🌐 Hỗ trợ nhiều ngôn ngữ | PHP, Python, Node.js, Java, Ruby, v.v. |
🔁 Dễ mở rộng | Có thể chạy nhiều instance Memcached để phân tải |
RAM bị giới hạn ⇒ nếu full thì dữ liệu cũ bị ghi đè.
Dữ liệu không bền vững (bị mất khi restart Memcached).
Không phù hợp để lưu trữ dữ liệu lâu dài.
Chỉ lưu dữ liệu đơn giản dạng key → value.
Tiêu chí | Memcached | Redis |
---|---|---|
Cấu trúc dữ liệu | Key-Value đơn giản | Hỗ trợ nhiều loại dữ liệu: List, Set, Hash |
Tốc độ | Rất nhanh | Nhanh |
Lưu trữ lâu dài | ❌ Không hỗ trợ | ✅ Có thể lưu vào disk |
Hỗ trợ tính năng cao | ❌ | ✅ Pub/Sub, Stream, Script Lua... |
sudo apt update sudo apt install memcached libmemcached-tools -y
sudo systemctl status memcachedNếu chưa chạy:
sudo systemctl start memcached sudo systemctl enable memcached
sudo apt install php-memcached -y sudo systemctl restart php7.4-fpm # Hoặc php8.x-fpm tùy bản PHP bạn đang dùngKiểm tra đã load extension chưa:
php -m | grep memcached
Nếu có dòng memcached
là ok.
Tạo file test-memcached.php
:
<?php $mem = new Memcached(); $mem->addServer("127.0.0.1", 11211); // Lưu cache $mem->set("foo", "Hello Memcached", 60); // Lấy cache echo $mem->get("foo"); ?>
Truy cập trình duyệt: http://yourdomain.com/test-memcached.php
Nếu hiển thị Hello Memcached
là thành công.
Memcached mặc định lắng nghe 127.0.0.1
(nội bộ) → an toàn.
Nếu dùng cho nhiều server, cần cấu hình mở port và firewall cẩn thận, tránh bị chiếm quyền kiểm soát.
Xem stats:
echo "stats settings" | nc localhost 11211Xóa toàn bộ cache:
echo "flush_all" | nc localhost 11211