2010-01-20 31 views
15

On PHP.net Tôi đang tìm kiếm tại Memcache::set chức năng và nó có cờ tùy chọn này để sử dụng nén ...Tính năng nén trong Memcache của PHP là gì?

Sử dụng MEMCACHE_COMPRESSED để lưu trữ các mục nén (sử dụng zlib).

$memcache_obj->set('var_key', 
        'some really big variable', 
        MEMCACHE_COMPRESSED, 
        50); 

Tôi tò mò, những gì sẽ là lợi ích của việc này, chỉ cần sử dụng ít không gian? Nó có vẻ như điều này sẽ làm chậm quá trình xuống?

+1

Nó sẽ sử dụng ít dung lượng hơn trong memcache và tốn ít thời gian hơn để truyền qua mạng. Nhưng bạn thêm chi phí nén và giải nén. Ngoài ra, bạn chạy một nguy cơ không tương thích với các khách hàng memcache khác, và những thứ như lệnh tăng memcache. –

Trả lời

24

Nén và giải nén trên các máy chủ đang chạy PHP có thể phải nhanh tay - tùy thuộc vào mạng của bạn và tải về máy chủ của bạn, nó có thể được nhanh hơn chuyển hơn (không nén) dữ liệu đến và đi từ memcached máy chủ thông qua mạng.

Nén dữ liệu của bạn cũng có nghĩa là sử dụng ít bộ nhớ hơn trên các máy chủ được ghi nhớ.

Như thường lệ, bạn phải chọn giữa CPU, mạng và RAM - và bạn phải xem xét các máy chủ và mạng của bạn, tải của chúng và các tài nguyên có sẵn để có thể quyết định.

Giải pháp "nhanh nhất" trong tình huống cụ thể của bạn là gì? Chỉ có bạn mới có thể nói ... Và cách duy nhất để biết có lẽ là bằng cách kiểm tra cả hai giải pháp trong "điều kiện thực tế".


Ngoài ra, mục ghi nhớ không thể lớn hơn 1 MB; Tôi cho rằng, theo một số cách, nén có thể giúp đặt các mục lớn hơn 1 MB (khi chưa được nén) thành memcached.

+1

Đặc biệt đề cập đến giá thầu CPC kích thước mục. –

+0

Martin, cảm ơn rất nhiều cho một câu trả lời tuyệt vời! – Industrial

4

Bạn nói đúng, đó là giao dịch giữa số chiếm ít không gian hoặc tăng thêm chu kỳ CPU.

Bạn cũng đã chọn tài nguyên nào quý giá hơn đối với mình, RAM hoặc CPU.

+1

Gợi ý: RAM. CPU hiện đại có thể chạy các thuật toán cũ như zlib thực sự nhanh chóng. –

+1

Một gợi ý khác. RAM hiện đại lớn. Luôn luôn hồ sơ ... –

4
  1. memcached có thể được sử dụng để giữ bộ nhớ cache được phân phối giữa các máy. Trong trường hợp đó, các bản cập nhật cho bộ đệm sẽ cần được gửi qua mạng hoặc kết nối khác giữa các máy. Nén làm giảm lượng dữ liệu cần gửi đi do đó giảm thời gian cần thiết để chuyển và do đó có thể cải thiện hiệu năng hệ thống.
  2. ngay cả trong một máy chủ, nén là đơn vị cường độ nhanh hơn so với trao đổi các trang bộ nhớ đến/từ đĩa, vì vậy nếu bạn đang hoán đổi bộ nhớ do thiếu, nén sẽ giảm số tiền cần được hoán đổi, và do đó cải thiện hiệu suất. Trong điều kiện góc bên phải, nén có thể làm giảm kích thước của dữ liệu đủ để bạn không phải trao đổi gì cả - một chiến thắng lớn về hiệu suất.
+1

Nếu máy chủ lưu trữ memcache của bạn (hoặc máy chủ) đang/đang trao đổi, bạn đang làm điều gì đó rất sai. – dland

Các vấn đề liên quan