Khi nào tôi nên sử dụng Memcache thay vì Memcached?


321

Dường như PHP có hai thư viện memcached có tên là memcachememcached . Sự khác biệt là gì và làm thế nào để bạn biết nên sử dụng cái nào? Là một lỗi thời? Có vẻ như memcached cung cấp nhiều phương thức hơn nên tôi cho rằng điều đó có nghĩa là nó đã có sự phát triển nhất - nhưng dường như nó cũng yêu cầu các thư viện C / C ++ bên ngoài nên tôi không chắc mình có thể cài đặt nó không.

Có vẻ như memcache đã tồn tại lâu hơn, không yêu cầu các thư viện bổ sung và có các tệp nhị phân được biên dịch sẵn cho các cửa sổ! Tôi nghĩ rằng nó sẽ là sự lựa chọn tốt hơn bây giờ. Tuy nhiên, chưa quen với memcached (máy chủ) Tôi không chắc có một số tính năng siêu quan trọng trong memcached (php) khiến nó đáng để thêm rắc rối hay không.



bản sao của serverfault.com/questions/63383/memcache-vs-memcached chỉ sau vài ngày, nhưng điều này đã nhận được nhiều lượt xem và bình chọn hơn :)
Stefano

Câu trả lời:


249

Thư viện khách Memcached vừa mới được phát hành là ổn định. Nó đang được sử dụng bởi digg (được phát triển cho digg bởi Andrei Zmievski, giờ không còn với digg) và thực hiện nhiều giao thức memcached hơn so với máy khách memcache cũ. Các tính năng quan trọng nhất mà memcached có là:

  1. Mã thông báo Cas . Điều này làm cho cuộc sống của tôi dễ dàng hơn nhiều và là một hệ thống phòng ngừa dễ dàng cho dữ liệu cũ. Bất cứ khi nào bạn lấy thứ gì đó từ bộ đệm, bạn có thể nhận được bằng mã thông báo cas (số kép). Bạn có thể sử dụng mã thông báo đó để lưu đối tượng được cập nhật của mình. Nếu không có ai khác cập nhật giá trị trong khi luồng của bạn đang chạy, trao đổi sẽ thành công. Nếu không, mã thông báo cas mới hơn đã được tạo và bạn buộc phải tải lại dữ liệu và lưu lại bằng mã thông báo mới.
  2. Đọc qua các cuộc gọi lại là điều tốt nhất kể từ khi bánh mì cắt lát. Nó đã đơn giản hóa nhiều mã của tôi.
  3. getDelayed () là một tính năng hay có thể giảm thời gian tập lệnh của bạn phải chờ kết quả quay lại từ máy chủ.
  4. Mặc dù máy chủ memcached được cho là rất ổn định, nhưng nó không phải là nhanh nhất. Bạn có thể sử dụng giao thức nhị phân thay vì ASCII với máy khách mới hơn.
  5. Bất cứ khi nào bạn lưu dữ liệu phức tạp vào memcached, máy khách thường sử dụng tuần tự hóa giá trị (chậm), nhưng bây giờ với máy khách memcached, bạn có tùy chọn sử dụng igbinary . Cho đến nay tôi chưa có cơ hội kiểm tra mức tăng hiệu suất này có thể đạt được.

Tất cả những điểm này là đủ để tôi chuyển sang khách hàng mới nhất và có thể nói với bạn rằng nó hoạt động như một cơ duyên. Có sự phụ thuộc bên ngoài vào thư viện libmemcached , nhưng dù sao cũng đã cài đặt được nó trên Ubuntu và Mac OSX, vì vậy cho đến nay không có vấn đề gì.

Nếu bạn quyết định cập nhật lên thư viện mới hơn, tôi khuyên bạn nên cập nhật lên phiên bản máy chủ mới nhất cũng như nó cũng có một số tính năng hay. Bạn sẽ cần phải cài đặt libevent để nó biên dịch, nhưng trên Ubuntu thì không có nhiều vấn đề.

Tôi chưa thấy bất kỳ khuôn khổ nào đón khách hàng memcached mới cho đến nay (mặc dù tôi không theo dõi chúng), nhưng tôi cho rằng Zend sẽ sớm lên tàu.

CẬP NHẬT

Zend Framework 2 có bộ điều hợp cho Memcached có thể tìm thấy ở đây


1
Câu trả lời tuyệt vời; Ngoài ra, sự phụ thuộc bên ngoài vào libmemcached thực sự là một điểm cộng, trong trường hợp này, vì đây là một trong những khách hàng được phát triển tích cực hơn.
Marc Bollinger

Đã đồng ý. Sự phụ thuộc bên ngoài libmemcached không nên được coi là một vấn đề gì, giống như libevent.
Miha Hribar

1
Điều đó Cas Tokens nghe có vẻ như là điểm cộng lớn nhất. Trên thực tế, từ việc xem xét các tính năng này, có vẻ như memcached đang hướng nhiều hơn đến một chủ sở hữu dữ liệu được quản lý, như DB và ít giống như bộ đệm tạm thời.
Xeoncross

Nếu bạn đang tìm kiếm rằng bạn đã có memcachedb ( memcachedb.org ) mà thực sự chỉ là một Berkley DB nói giao thức memcached.
Miha Hribar

8
Câu trả lời này thậm chí không nói lên sự khác biệt giữa memcache và memcached?! memcache chỉ là phiên bản cũ của memcached?
Daniel W.

10

Khi sử dụng Windows, phần so sánh bị cắt ngắn: memcachedường như là ứng dụng khách duy nhất khả dụng.


Không phải lúc nào bạn cũng có thể thêm memcachedtiện ích mở rộng?
Pacerier

1
Dường như điều này không thực sự đúng. commaster.net/content/installing-memcached-windows
Joe Leonard

@JoeLeonard từ trang bạn liên kết đến: "Để giao diện với memcachedPHP, bạn cần cài đặt memcachetiện ích mở rộng cho PHP"
rymo

8

Đây là năm 2013. Hãy quên đi những bình luận năm 2009. Tương tự như vậy, nếu bạn đang chạy tải lưu lượng nghiêm trọng, thậm chí không nên suy nghĩ về cách thực hiện với memcache dựa trên cửa sổ. Khi giao dịch với quy mô rất lớn (500+ máy chủ web mặt trước) và hơn 20 máy chủ và máy chủ cơ sở dữ liệu phía sau (hỗn hợp mysql & mssql), một cụm máy chủ memcached (12 máy chủ trong nhóm) hỗ trợ nhiều ứng dụng OLTP khối lượng lớn trả lời 25K ~ 40K mc-> nhận cuộc gọi mỗi giây. Các cuộc gọi này là những cuộc gọi KHÔNG phải đến cơ sở dữ liệu.

IMHO, việc sử dụng memcached này đã cung cấp SERIOUS $$$, $$$ tiết kiệm trên CAPEX cho các máy chủ & giấy phép DB mới cũng như các hợp đồng hỗ trợ cho các thiết kế thương mại lớn.


48
Làm thế nào điều này trả lời câu hỏi về sự khác biệt giữa 2 triển khai giao thức memcache trong php?
Marki555

9
Đây nên là một bình luận.
Elijah Lynn

7

Memcached là một API mới hơn, nó cũng cung cấp memcached như một nhà cung cấp phiên có thể rất tuyệt nếu bạn có một trang trại máy chủ.

Sau khi phiên bản vẫn còn rất thấp 0,2 nhưng tôi đã sử dụng cả hai và tôi không gặp phải vấn đề lớn nào, vì vậy tôi sẽ chuyển sang memcached vì nó mới.


1
Cả hai thực sự làm việc như trình xử lý phiên mặc dù tôi sẽ không bao giờ muốn sử dụng chúng cho việc đó. us3.php.net/manual/en/memcache.examples-overview.php
Xeoncross

tốt, xấu của tôi, vâng, nó chỉ thực sự hữu ích trên máy chủ lớn khi tôi trở nên thực sự quan trọng, cộng với memcache không xác thực rằng nó sẽ không bỏ một số đối tượng để có được bộ nhớ quá khó để biết cách chia tỷ lệ.
RageZ

1
Phiên bản 0.2 đã bị vượt qua bởi phiên bản 1.0.0 ổn định.
Miha Hribar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.