#

So sánh Memcached vs Redis – Công cụ nào hữu ích hơn?

Nhắc đến hệ thống lưu trữ dữ liệu trong bộ nhớ không thể không kể đến Memcached và Redis. Trong bài viết dưới đây, BKHOST sẽ so sánh MemcachedRedis để bạn có lựa chọn hợp lý.

So sanh Memcached vs Redis

Khái niệm về Memcached và Redis

Đăng ký Gmail Doanh Nghiệp tại BKHOST

BKHOST đang có chương trình khuyến mại cực tốt cho khách hàng đăng ký dịch vụ Gmail Tên Miền Riêng:

  • Giảm giá lên đến 20%.
  • Giá chỉ từ 495k/5 mail.
  • Dung lượng lên đến 30GB/user.

Đăng ký ngay:

email tên miền doanh nghiệp

Để xử lý một lượng dữ liệu lớn đòi hỏi phải có các cache để tăng hiệu suất làm việc của hệ thống. Memcached và Redis được lựa chọn để làm nhiệm vụ đó. Memcached là một cache phân tán được thiết kế khá đơn giản nên rất dễ sử dụng. Trong khi đó điểm nổi bật của Redis là tích hợp đa dạng các tính năng và lưu trữ hầu hết các loại dữ liệu trong bộ nhớ.

Điểm tương đồng giữa Memcached và Redis

Memcached với Redis đều hoạt động tích cực với vai trò là những cache cho hệ thống. Hãy dùng chúng tôi điểm qua một vài nét tương đồng của hai công cụ này:

  • Độ trễ dưới một phần nghìn giây: thời gian phản hồi ở cả Memcached và Redis đều dưới mili giây.
  • Phân vùng dữ liệu: phân phối dữ liệu qua nhiều nút là đặc điểm chung mà cả Memcached với Redis đều sở hữu.
  • Ngôn ngữ lập trình: những ngôn ngữ lập trình phổ biến như Java, Python, JavaScript, C và Ruby đều được cả Memcached với Redis hỗ trợ.
  • Xóa bộ nhớ đệm: cả Memcached với Redis đều cho phép xóa bộ nhớ cache. Cụ thể Memcached xóa bằng lệnh flush _ all còn Redis lại dùng lệnh FLUSHDB hoặc FLUSHALL.
  • Mở rộng quy mô: cả hai công cụ đều có khả năng mở rộng khi nhu cầu xử lý dữ liệu tăng lên.

Điểm khác biệt giữa Memcached và Redis

Mặc dù có những điểm tương đồng nhưng Memcached và Redis vẫn sở hữu nét riêng phù hợp với những đối tượng người dùng khác nhau, cụ thể:

Command-Line

Bằng cách kết nối server qua Telnet, Memcached cho phép chúng ta chạy các lệnh sau:

$ telnet 10.2.3.4 5678
Trying 10.2.3.4...
Connected to 10.2.3.4.

$ stats
STAT pid 14868
STAT uptime 175931
STAT time 1220540125
// ...

Khác với Memcached, dòng lệnh chuyên dụng redis-cli sẽ đi kèm với Redis để cho phép chúng ta thực hiện các lệnh:
$ redis-cli COMMAND
1) 1) "save"
2) (integer) 1
3) 1) "admin"
2) "noscript"
// ...
2) 1) "multi"
2) (integer) 1
3) 1) "noscript"
2) "fast"
// ...
3) 1) "geodist"
2) (integer) -4
3) 1) "readonly"
// ...
// ...

Disk I/O Dumping

Việc kết xuất đĩa ở Memcached phải có sự hỗ trợ của một số công cụ thuộc bên thứ ba chẳng hạn như memcached-dd hoặc libmemcached-tools. Riêng với Redis thì không cần bất cứ sự can thiệp nào vì bộ nhớ đệm này có cơ chế mặc định cấu hình cao cho phép kết xuất đĩa dễ dàng. Đặc điểm này mang lại lợi ích lớn cho lưu trữ và khôi phục.

Để chụp nhanh dữ liệu trong bộ nhớ khi bạn sử dụng dòng lệnh chuyên dụng redis-cli hãy thực hiện lệnh SAVE đồng bộ:

$ redis-cli SAVE
OK

Lúc này file nhị phân dump.rdb chứa lệnh lưu trữ ảnh chụp nhanh sau đó hiển thị OK khi hoàn tất.

Khi bắt đầu quá trình nền của thao tác chụp ảnh nhanh bạn cần thực thi lệnh BGSAVE:

$ redis-cli BGSAVE
OK

Bên cạnh đó để kiểm tra thời gian Unix của ảnh chụp nhanh DB hoàn thành gần nhất bạn hãy dùng lệnh LASTSAVE:
$ redis-cli LASTSAVE
(integer) 1410853592

Cấu trúc dữ liệu

Các cặp key – value được Memcached lưu trữ dưới dạng chuỗi và quy định giới hạn kích thước 1MB cho mỗi value. Redis lưu trữ đa dạng các loại dữ liệu với những kiểu dữ liệu phong phú ví dụ như list, set, hash và kích thước của value lên đến con số 512MB.

Replication (Nhân rộng)

Memcache cho phép copy bởi các nhánh của bên thứ ba chẳng hạn như với repcached. Trong khi đó với Redis chúng ta có thể nhân rộng các cụm khi tái tạo bộ nhớ chính. Để làm được điều này đầu tiên hãy tạo bản sao của server Redis bằng lệnh REPLICAOF. Sau đó dùng lệnh PSYNC trên bản sao để bắt đầu copy từ bản chính.

Transactions (Giao dịch)

Các giao dịch không được Memcached hỗ trợ. Ngược lại các giao dịch lại được Redis cung cấp out-of-the-box để thực hiện các lệnh. Bạn có thể dùng lệnh MULTI để bắt đầu giao dịch. Những lệnh tiếp theo được thực hiện bằng cách sử dụng lệnh EXEC. Cuối cùng lệnh XEM được Redis cung cấp để những giao dịch có điều kiện được triển khai.

Publish và Subscribe Messaging

Publish, Subscribe Messaging không được Memcached hỗ trợ. Trong khi đó Redis lại cung cấp chức năng này bằng cách sử dụng hàng đợi thông báo pub/sub. Những lệnh chuyên dụng như PUBLISH, SUBSCRIBE, UNSUBSCRIBE để xuất bản, đăng ký, hủy đăng ký…

Hỗ trợ không gian địa lý

Hỗ trợ không gian địa lý là chức năng mà các bộ nhớ đệm cần có để triển khai các tính năng dựa trên vị trí cho các ứng dụng. Khác với Memcached, Redis có rất nhiều lệnh đi kèm như GEODIST, GEORADIUS để quản lý dữ liệu không gian địa lý theo thời gian thực.

Kiến ​​​​trúc

Redis chỉ dùng một core, nếu so sánh với Memcached trong việc lưu trữ các tập dữ liệu nhỏ thì hiệu suất hoạt động tốt hơn. Memcached lại sử dụng nhiều core và có khả năng lưu trữ lượng dữ liệu lớn. Vì thế xét trên lượng dữ liệu tổng thể thì Memcached lại vượt trội hơn Redis.

LUA Scripting

Không giống như Memcached, Redis cung cấp các lệnh như EVAL, SCRIPT, LOAD để thực thi các tập lệnh LUA. Ví dụ để đánh giá tập lệnh bạn có thể thực hiện lệnh EVAL:

$ redis-cli eval "return redis.call('set',KEYS[1],'baeldung')" 1 website
OK

Sử dụng bộ nhớ

Khi so sánh cấu trúc dữ liệu dạng key – value thì Memcached có tỷ lệ sử dụng bộ nhớ cao hơn Redis. Tuy nhiên, với cấu trúc dữ liệu dạng hash thì Redis lại hiệu quả hơn Memcached.

Tổng kết

Bài viết trên chúng tôi đã so sánh Memcached vs Redis để bạn thấy rõ những điểm tương đồng và khác biệt giữa chúng. Hy vọng qua việc xem xét những tính năng của các bộ nhớ đệm nói trên bạn sẽ có lựa chọn đúng đắn cho từng trường hợp.

Nếu còn gặp bất cứ vướng mắc gì về nội dung bài viết trên, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Đăng ký tên miền .PRO tại BKHOST

BKHOST đang có chương trình khuyến mại cực shock dành cho khách hàng đăng ký tên miền .PRO:

  • Giảm giá trên 70%.
  • Chỉ còn 129k cho năm đầu tiên (giá gốc: 450k).
  • Miễn phí 100% dịch vụ khởi tạo tên miền .PRO

Đăng ký tên miền .PRO ngay hôm nay.

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger