×

Cách viết class để lưu trữ cache với Memcached trong PHP

Trong bài viết này, chúng ta sẽ tìm hiểu cách viết một lớp (class) trong PHP để lưu trữ cache sử dụng Memcached. Memcached là một hệ thống lưu trữ cache phía máy chủ phổ biến, giúp tăng tốc độ truy cập dữ liệu bằng cách lưu trữ dữ liệu trong bộ nhớ RAM thay vì phải truy vấn cơ sở dữ liệu nhiều lần.

Memcached là gì?

Memcached là một pdcache (distributed cache) có khả năng mở rộng, được thiết kế để tăng tốc độ truy cập dữ liệu cho các ứng dụng web bằng cách lưu trữ những đoạn dữ liệu tạm thời trong RAM. Điều này giúp giảm thiểu thời gian truy cập dữ liệu từ cơ sở dữ liệu, giúp ứng dụng bạn hoạt động hiệu quả hơn.

Tại sao nên sử dụng Memcached?

Khi một ứng dụng web phát triển, số lượng người sử dụng tăng lên, dẫn đến sự gia tăng số lượng truy vấn đến cơ sở dữ liệu. Điều này có thể gây ra sự chậm trễ trong việc lấy dữ liệu và làm giảm trải nghiệm người dùng. Memcached giúp không chỉ giảm thiểu số lượng truy vấn phải thực hiện lên cơ sở dữ liệu mà còn tăng tốc độ phản hồi của ứng dụng bằng cách lưu trữ các kết quả truy vấn phổ biến trong bộ nhớ.

Cài đặt Memcached trên máy chủ

Trước khi bắt đầu viết code, bạn cần đảm bảo rằng Memcached đã được cài đặt và đang chạy trên máy chủ của bạn. Bạn có thể cài đặt Memcached bằng cách sử dụng các lệnh sau (tuỳ thuộc vào hệ điều hành bạn đang sử dụng):

  • Trên Ubuntu:

    sudo apt-get update
    sudo apt-get install memcached
  • Trên CentOS:

    sudo yum install memcached

Sau khi cài đặt xong, bạn có thể khởi động dịch vụ Memcached và đưa nó vào khởi động tự động khi máy chủ khởi động lại:

sudo service memcached start
sudo systemctl enable memcached

Cài đặt PHP Memcached Extension

Bạn cũng cần cài đặt PHP extension cho Memcached để có thể sử dụng nó trong mã PHP. Bạn có thể cài đặt bằng cách sử dụng:

  • Trên Ubuntu:

    sudo apt-get install php-memcached
  • Trên CentOS:

    sudo yum install php-pecl-memcached

Sau khi cài xong, đừng quên khởi động lại server PHP của bạn (Apache hoặc Nginx).

Xây dựng lớp cache với Memcached

Giờ chúng ta sẽ xây dựng một lớp cache đơn giản để lưu trữ dữ liệu bằng Memcached. Lớp này sẽ bao gồm các phương thức để lưu, lấy và xóa dữ liệu từ bộ nhớ cache.

class MemcachedCache {
    private $memcached;

    public function __construct($host = '127.0.0.1', $port = 11211) {
        $this->memcached = new Memcached();
        $this->memcached->addServer($host, $port);
    }

    public function set($key, $value, $expiration = 3600) {
        return $this->memcached->set($key, $value, $expiration);
    }

    public function get($key) {
        return $this->memcached->get($key);
    }

    public function delete($key) {
        return $this->memcached->delete($key);
    }

    public function flush() {
        return $this->memcached->flush();
    }
}

Phân tích mã nguồn lớp MemcachedCache

  • Khởi tạo: Hàm khởi tạo __construct sử dụng để tạo một đối tượng Memcached và thêm một máy chủ Memcached. Mặc định, nó sử dụng địa chỉ 127.0.0.1 và cổng 11211.

  • Phương thức set: Phương thức set dùng để lưu trữ một giá trị vào cache. Nó nhận ba tham số: key, valueexpiration (thời gian sống của cache).

  • Phương thức get: Phương thức get dùng để lấy giá trị từ cache dựa trên một key nhất định.

  • Phương thức delete: Phương thức delete dùng để xóa giá trị khỏi cache dựa theo key.

  • Phương thức flush: Phương thức flush dùng để xóa tất cả các giá trị trong cache.

Sử dụng lớp MemcachedCache

Để sử dụng lớp MemcachedCache, trước tiên bạn cần khởi tạo đối tượng và sau đó bạn có thể sử dụng các phương thức đã định nghĩa.

$cache = new MemcachedCache();

// Lưu trữ một giá trị
$cache->set('my_key', 'my_value', 600); // Lưu trữ trong 10 phút

// Lấy giá trị
$value = $cache->get('my_key');
echo 'Giá trị từ cache: ' . $value;

// Xóa giá trị
$cache->delete('my_key');

// Kiểm tra lại giá trị
$value = $cache->get('my_key');
if (!$value) {
    echo 'Giá trị đã bị xóa!';
}

// Làm sạch cache
$cache->flush();

Lợi ích của việc sử dụng Cache

  1. Tăng tốc độ: Dữ liệu được lưu trữ và truy xuất từ bộ nhớ RAM nhanh hơn nhiều so với việc truy vấn từ cơ sở dữ liệu.

  2. Giảm tải cho cơ sở dữ liệu: Sử dụng cache giúp giảm số lượng truy vấn tới cơ sở dữ liệu, làm cho cơ sở dữ liệu không bị quá tải.

  3. Cải thiện trải nghiệm người dùng: Thời gian phản hồi của ứng dụng nhanh hơn, dẫn đến trải nghiệm tốt hơn cho người dùng.

Kết luận

Memcached là một công cụ mạnh mẽ để tối ưu hóa hiệu suất ứng dụng web. Bằng cách xây dựng lớp MemcachedCache trong PHP, bạn có thể dễ dàng lưu trữ và truy xuất dữ liệu từ cache, cải thiện tốc độ và giảm tải cho hệ thống của bạn. Hãy thử nghiệm và áp dụng vào dự án của bạn ngay hôm nay để thấy sự khác biệt!

Comments