Memcached là gì? Các hoạt động và ứng dụng nổi bật của Memcached

1225
21-10-2021
Memcached là gì? Các hoạt động và ứng dụng nổi bật của Memcached

Caching là một trong những kỹ thuật cơ bản nhất để tăng tốc độ truy xuất dữ liệu của các chương trình máy tính nói chung và các ứng dụng web nói riêng. Mục tiêu cơ bản của caching là lưu trữ những dữ liệu có tần suất sử dụng lớn ở nơi dễ truy cập nhất, do đó tăng tốc truy cập và cải thiện trải nghiệm người dùng. 

Một trong các công cụ độc lập hỗ trợ caching hiệu quả và có nhiều ưu điểm bên cạnh các công cụ tích hợp sẵn trong web framework là Memcached. Trong bài viết hôm nay, hãy cùng BizFly Cloud tìm hiểu rõ hơn về công cụ này.

Memcached là gì?

Memcached là một công cụ lưu trữ tạm thời (caching) các bản sao của dữ liệu truy xuất từ cơ sở dữ liệu hoặc dữ liệu tạm thời khác vào bộ nhớ trong (RAM) của web server. Dữ liệu được lưu trữ và truy xuất trong Memcached là những dữ liệu nhỏ như chuỗi (strings) và đối tượng (objects) dưới dạng key – value (cặp tương ứng khóa – giá trị).

Memcached khá đơn giản nhưng mạnh mẽ, được phát triển theo giấy phép mã nguồn mở cho cả Linux và Windows. Hiện tại Memcached đã có API hỗ trợ cho hầu hết các ngôn ngữ lập trình phổ biến và được tin dùng trong nhiều hệ thống lớn như Facebook, Youtube và Twitter.

Memcached là gì

Memcached là một công cụ lưu trữ tạm thời các bản sao của dữ liệu truy xuất từ cơ sở dữ liệu

Các ứng dụng của Memcached

Làm bộ đệm tăng tốc truy cập (cache)

Memcached được sử dụng phổ biến nhất cho mục đích tạo bộ đệm trên bộ nhớ trong (in-memory cache) hiệu năng cao, giảm thiểu độ trễ truy cập dữ liệu, tăng lưu lượng và giảm tải cho các hệ thống backend. Nó không chỉ cache các dữ liệu từ cơ sở dữ liệu mà còn các dữ liệu khác như ảnh, video, tập tin,… cần sử dụng thường xuyên trong quá trình hoạt động của server.

Các ứng dụng của Memcached

Memcached được sử dụng phổ biến nhất cho mục đích tạo bộ đệm trên bộ nhớ trong

Lưu trữ dữ liệu phiên hoạt động (session store)

Với tính chất lưu trữ dữ liệu không vĩnh viễn (do sử dụng bộ nhớ trong), Memcached tỏ ra phù hợp với các nhà phát triển để lưu trữ và quản lý các dữ liệu có tính chất tạm thời như session, vốn chỉ tồn tại trong thời gian ngắn và không yêu cầu lưu trữ dài hạn giữa các phiên làm việc của người dùng.

Cách hoạt động của Memcached

Memcached hoạt động với nguyên tắc cơ bản tương tự các công cụ caching khác, với quy trình truy cập dữ liệu như sau:

  • Server nhận request dữ liệu, tìm kiếm dữ liệu đó trong Memcached.
  • Nếu dữ liệu đã có trong Memcached, server trả lời request ngay.
  • Nếu dữ liệu không tồn tại trong Memcached (lần đầu truy cập hoặc dữ liệu được cache đã hết hạn), server truy cập cơ sở dữ liệu (và các vị trí lưu trữ khác) để lấy dữ liệu. Dữ liệu mới được lưu vào Memcached và trả lời request.

Dù cùng sử dụng cặp Key-value để lưu trữ dữ liệu, Memcached không xác định kiểu dữ liệu như Redis mà lưu trữ mọi thứ dưới dạng chuỗi. Mặc định kích thước tối đa của key là 250B và 1MB đối với value, tuy nhiên ta có thể tùy chỉnh tăng giới hạn kích thước đối tượng lưu trữ thông qua lệnh tích hợp trong Memcached.

Ngoài giới hạn về kích thước mỗi đối tượng, lượng dữ liệu mà Memcached có thể lưu trữ cũng bị giới hạn bởi bộ nhớ hệ thống. Khi không còn đủ chỗ trống trong bộ nhớ, những đối tượng dữ liệu ít được truy cập nhất sẽ bị loại bỏ để nhường chỗ cho giá trị mới.

Cách hoạt động của Memcached

Memcached hoạt động với nguyên tắc cơ bản tương tự các công cụ caching khác

Memcached sử dụng phương thức cấp phát bộ nhớ có tên là Slab, phân đoạn bộ nhớ thành các phân vùng có kích thước khác nhau và lưu trữ các cặp key-value vào những phân vùng có kích thước phù hợp. Điều này giúp tối ưu hóa hiệu quả sử dụng và giảm thiểu tình trạng phân mảnh bộ nhớ.

Ưu nhược điểm của Memcached

Ưu điểm

  • Tốc độ nhanh chóng: mọi dữ liệu được lưu trữ ngay trong RAM cho tốc độ truy xuất vượt trội cả các cơ sở dữ liệu truyền thống lẫn hệ thống tập tin. Các yêu cầu có thể được đáp ứng chỉ với thời gian dưới 1ms.
  • Đơn giản, dễ sử dụng: Memcached được thiết kế đơn giản và trừu tượng, làm cho nó vừa mạnh mẽ vừa dễ sử dụng trong phát triển ứng dụng. Các ngôn ngữ được hỗ trợ bao gồm Java, Python, PHP, C, C ++, C #, JavaScript, Node.js, Ruby, Go và nhiều ngôn ngữ khác.
  • Khả năng mở rộng: Memcached hỗ trợ kiến trúc đa luồng, cho phép bổ sung các nút mới vào cụm lưu trữ đã có và sử dụng nhiều lõi xử lý trên cùng một nút. Nhờ đó, Memcached phù hợp để phát triển các ứng dụng với khả năng tăng quy mô lớn và xây dựng các giải pháp caching phân tán với hiệu năng ổn định.
  • Cộng đồng hỗ trợ nhiệt tình: Nhờ tính nguồn mở mà Memcached có cộng đồng lớn cùng phát triển và luôn sẵn sàng giúp bạn tối ưu hiệu năng khi sử dụng công cụ.
Ưu nhược điểm của Memcached

Nhược điểm

  • Không hỗ trợ thao tác trên kiểu dữ liệu: bạn không thể cập nhật từng thuộc tính của đối tượng dữ liệu mà cần load toàn bộ đối tượng để thực hiện sửa đổi.
  • Chỉ có một phương thức loại bỏ dữ liệu: Memcached bị giới hạn với LRU (Least recently used – loại bỏ phần tử ít được sử dụng nhất gần đây khi hết không gian trống), trong khi các công cụ khác như Redis cung cấp nhiều phương thức hơn.
  • Không hỗ trợ lưu trữ dữ liệu lâu dài

Cách cài đặt và sử dụng Memcached

Cài đặt Memcached trên Windows

  • Tải file cài đặt Memcached (file zip) 32-bit hoặc 64-bit.
  • Giải nén file zip đến thư mục muốn cài đặt trên ổ cứng, ví dụ "C:\memcached". Trong thư mục giải nén lúc này sẽ chứa file memcached.exe.
  • Mở cửa sổ Command Prompt với quyền Administrator, gõ "cd C:\memcached" (đường dẫn sau cd có thể khác tùy vào vị trí giải nén bạn chọn) để trỏ đến thư mục chứa file thực thi.
  • Chạy lệnh "memcached.exe – d install"
  • Để khởi động Memcached, sử dụng lệnh "memcached.exe -d start". Để tắt chương trình, chạy lệnh "memcached.exe -d stop". Mặc định Memcached server hoạt động trên port 11211.

Sử dụng Memcached trong C#

Đầu tiên, các bạn mở một project bất kỳ trong visual studio và thêm nuget package "EnymMemcached".

Sử dụng Memcached trong C#

Demo cú pháp đơn giản

Sử dụng Memcached trong C#-1

Kết quả

Sử dụng Memcached trong C#-2

Hy vọng qua bài viết này BizFly Cloud đã giúp các bạn nắm được những thông tin cơ bản về Memcached và cách sử dụng công cụ này. Chắc chắn nếu được sử dụng hợp lý, Memcached sẽ giúp cải thiện đáng kể hiệu năng ứng dụng của bạn, đồng thời nâng cao trải nghiệm người dùng.

TAGS: Memcached
SHARE