it-swarm-vi.tech

memcache vs memcached?

Tôi muốn sử dụng memcached

http://www.danga.com/memcached/

Tôi đã cài đặt nó thông qua yum install memcached

Nhưng bây giờ tôi cần kết nối với PHP, và có một phần mở rộng có tên memcache và một phần có tên memcached? ARGH

http://us3.php.net/manual/en/book.memcache.php
[.__.] http://us3.php.net/manual/en/book.memcached.php

Ai đó có thể chỉ cho tôi đi đúng hướng ở đây .. cái nào sẽ đi làm?

Ngoài ra, tôi có cần mở bất kỳ cổng nào để nó hoạt động mặc dù nó là cục bộ không? Sau khi chạy nó, tôi thử telnet 127.0.0.1 11211 và tôi bị từ chối kết nối.

76
thanksyo

Câu trả lời ngắn gọn: Hoặc là một trong những thứ bạn đang tìm kiếm, nhưng lựa chọn đầu tiên của tôi sẽ là memcache (cái đầu tiên bạn liệt kê), thuần túy dựa trên cách sử dụng danh pháp chính xác của nó.

Bây giờ đây là cách tôi đi đến kết luận đó:

Dưới đây là một nền tảng nhanh chóng trong việc đặt tên cho các quy ước (đối với những người không quen), điều này giải thích sự thất vọng của người hỏi: Đối với nhiều ứng dụng * nix, tác phẩm phụ trợ được gọi là "daemon" (nghĩ là "dịch vụ" trong Windows- đất), trong khi giao diện hoặc ứng dụng khách là những gì bạn sử dụng để kiểm soát hoặc truy cập daemon. Trình nền thường được đặt tên giống như ứng dụng khách, với chữ "d" được thêm vào nó. Ví dụ: "imap" sẽ là máy khách kết nối với trình nền "imapd".

Quy ước đặt tên này rõ ràng đang được tuân thủ bởi memcache khi bạn đọc phần giới thiệu cho mô-đun memcache (chú ý phân biệt giữa memcache và memcached trong đoạn trích này):

Mô-đun Memcache cung cấp giao diện hướng đối tượng và thủ tục tiện dụng cho trình nền bộ nhớ đệm được ghi nhớ, hiệu quả cao, được thiết kế đặc biệt để giảm tải cơ sở dữ liệu trong các ứng dụng web động.

Mô-đun Memcache cũng cung cấp trình xử lý phiên (memcache).

Thông tin thêm về memcached có thể được tìm thấy tại " http://www.danga.com/memcached/ .

Sự thất vọng ở đây là do tác giả của phần mở rộng PHP được đặt tên xấu memcached , vì nó có chung tên là daemon thực tế được gọi là memcached . Cũng lưu ý rằng trong phần giới thiệu về memcached (mô-đun php) , nó đề cập đến libmemcached , là thư viện dùng chung (hoặc API) được sử dụng bởi mô-đun để truy cập vào daemon memcached:

memcached là một hệ thống bộ nhớ đệm đối tượng bộ nhớ phân tán, hiệu năng cao, có bản chất chung, nhưng được dùng để tăng tốc các ứng dụng web động bằng cách giảm tải cơ sở dữ liệu.

Tiện ích mở rộng này sử dụng thư viện libmemcached để cung cấp API để liên lạc với các máy chủ memcached. Nó cũng cung cấp một trình xử lý phiên (memcached).

Thông tin về libmemcached có thể được tìm thấy tại " http://tangent.org/552/libmemcached.html .

Tóm lại, cả hai đều có chức năng giống nhau, nhưng đơn giản là chúng có các tác giả khác nhau, và một cái đơn giản được đặt tên phù hợp hơn so với cái kia.

24
Jessica McKinnon

Bạn có thể muốn xem So sánh máy khách PHP .

Phiên bản ngắn: Cả hai sẽ hoạt động, và trong hầu hết các trường hợp, một trong hai sẽ làm tốt.

Về vấn đề khác: Có, bạn sẽ có thể làm telnet 127.0.0.1 11211. Rất ít tường lửa sẽ chặn localhost giao tiếp với chính nó. Nếu bạn không thể kết nối, hãy xác minh rằng memcached thực sự đang chạy bằng cách thực hiện ps auxwww | grep memcached, cũng sẽ hiển thị cho bạn các đối số dòng lệnh được sử dụng để bắt đầu memcached. Một trong những đối số nên là -p 11211 hoặc số cổng khác. Xem man memcached cho ý nghĩa của tất cả các đối số có thể.

57
Nate

Như liên kết của Nate cho thấy, cả hai đều hoạt động hoàn hảo cho việc sử dụng đơn giản. Tuy nhiên, memcached hỗ trợ nhiều tính năng hơn cho phép bạn có được hiệu suất cao nhất từ ​​memcached. Giao thức nhị phân làm giảm lượng dữ liệu cần thiết được gửi giữa máy khách và máy chủ. Nhiều bảng và nhiều trang cho phép bạn nhận/đặt nhiều mục cùng một lúc. Nếu bạn đang tìm kiếm bạn cần nhiều hơn từ memcache, memcached là mô-đun tốt hơn. Việc sử dụng libmemcached cho thấy rằng chính thư viện có thể được tối ưu hóa nhiều hơn phiên bản PHP.

Memcached là một mô-đun gần đây hơn so với memcache, chỉ mới được phát hành 8 tháng trước. Nếu bạn cần nhắm mục tiêu một phiên bản PHP cũ hơn, thì bạn chỉ có thể thực sự sử dụng memcache.

28
David Pashley

Cái cũ hơn, buggier được gọi là php-memcache bởi vì đó có vẻ là tên thích hợp nhất. Phiên bản mới hơn, tốt hơn được phát triển độc lập bởi những người ở Digg thay vào đó được đặt tên là php-memcached vì lợi ích của sự định hướng.

Những người sẽ khuyên bạn nên chọn cái khác chỉ dựa trên tính chính xác của tên thực sự không có doanh nghiệp cung cấp lời khuyên kỹ thuật.

21
tylerl

Gần đây đã sử dụng php-memcache, tôi phải chỉ cho bạn sử dụng php-memcached.

Đây là một vài lý do ngoài đỉnh đầu của tôi ..

1) Không có phương thức getErrorCode () hoặc tương đương, vì vậy, nếu get () trả về FALSE, bạn sẽ không biết liệu đó có phải là vì giá trị được lưu trữ trong memcache IS sai hay không vấn đề của một số loại.

2) Thuật toán băm của nó để băm nhất quán dường như khác với các triển khai khác, chẳng hạn như nhiều thư viện máy khách được xây dựng từ libmemcached. Điều này có nghĩa là nếu bạn muốn sử dụng cùng một cụm memcache với nhiều ngôn ngữ, bạn có thể gặp sự cố khi lưu trữ giá trị với ứng dụng PHP và các khách hàng khác sẽ không tìm thấy nó .

6
user25576

Cả hai đều có vấn đề như ngày hôm nay. PECL/memcache đã cũ và đáng tin cậy, với một vài trường hợp ngoại lệ khi nó bị lỗi thời. PECL/memcached 1.x là beta tốt nhất. Một số chức năng không xử lý các phím số, nó bị rò rỉ các kết nối khi sử dụng các kết nối liên tục. Một số (tất cả?) Đang được sửa trong GitHub và sẽ được phát hành tại một số điểm trong 2.x, nhưng không phải hôm nay. Để có đánh giá chi tiết hơn, hãy xem http://brian.moonspot.net/php-memcached-issues

3
Brian Moon

Tôi đang làm việc trên một cuốn sách "Expert PHP và MySQL". Tôi đã viết khá nhiều điều tương tự về sự khác biệt. Điều tôi khuyên là PECL/memcached. # 1 - nó bao bọc đầy đủ -featured thư viện C hoạt động tốt # 2 - nó được duy trì gần đây. # 3 - nhiều tính năng hơn. Không chê bai PECL/memcache.

2
CaptTofu

Tôi đã gặp một số vấn đề khá nghiêm trọng với Drupal 6 và php-pecl-memcached trong đó thời gian phản hồi bị trì hoãn tới 5ms mỗi cuộc gọi và sẽ khiến một trang web cụ thể tạo ra nhiều cuộc gọi hơn 5x trước khi thay đổi thành php-pecl-memcached. Thay đổi thành php-pecl-memcache đã khắc phục tất cả các vấn đề; độ trễ và các cuộc gọi thêm.

Câu trả lời này chỉ có ở đây để giúp những người sử dụng Drupal 6 và có thể Drupal 7.

0
Spechal