2012-02-09 36 views
14

Tôi có một máy chủ Debian với RAM khoảng 16 GB mà tôi đang sử dụng với nginx và một số cơ sở dữ liệu mysql nặng và một số ứng dụng php tùy chỉnh. Tôi muốn thực hiện một bộ nhớ cache giữa Mysql và PHP, nhưng cơ sở dữ liệu quá lớn để lưu trữ mọi thứ trong RAM. Tôi nghĩ rằng một bộ nhớ cache LRU có thể tốt hơn cho đến nay như tôi nghiên cứu. Quy tắc này có phải là Redis không? Couchbase cũng là một xem xét.Memcached, Redis, hoặc Couchbase

Trả lời

15

Giả sử có một máy chủ duy nhất chạy nginx + php + mysql với một số RAM còn lại miễn phí, cách dễ nhất để sử dụng RAM đó cho bộ nhớ cache đơn giản là tăng bộ nhớ đệm của các phiên bản mysql. Cơ sở dữ liệu đã sử dụng các cơ chế giống như LRU để xử lý bộ đệm của chúng.

Bây giờ, nếu bạn cần di chuyển một phần của quá trình xử lý khỏi cơ sở dữ liệu, thì việc lưu trước bộ nhớ đệm có thể là một tùy chọn. Trước khi nói về memcached/redis, một bộ nhớ cache chia sẻ tích hợp với php như APC sẽ được cung cấp hiệu quả chỉ có một máy chủ được xem xét (thực sự hiệu quả hơn redis/memcached).

Cả memcached và redis đều có thể được xem xét để thực hiện bộ nhớ đệm từ xa (tức là chia sẻ bộ nhớ cache giữa các nút khác nhau). Tôi sẽ không loại trừ redis cho việc này: nó có thể dễ dàng được cấu hình cho mục đích này. Cả hai đều cho phép xác định giới hạn bộ nhớ và xử lý bộ nhớ cache với hành vi giống như LRU.

Tuy nhiên, tôi sẽ không sử dụng couchbase ở đây, đó là một đàn hồi (nghĩa là được sử dụng trên nhiều nút) NoSQL key/value store (nghĩa là không phải bộ đệm). Bạn có thể có thể di chuyển một số dữ liệu từ các trường hợp mysql của bạn đến một cụm sao cơ sở, nhưng sử dụng nó chỉ cho bộ nhớ đệm là IMO quá kỹ thuật.

+0

Tôi đã sử dụng APC, nhưng tập lệnh php cli mà chúng tôi đang sử dụng với ứng dụng web không thể truy cập cùng dữ liệu. Đó là nơi memcached trở thành bước hợp lý tiếp theo đầu tiên. Tôi đã nhìn vào couchbase bởi vì tôi đọc nó là một thay thế thả không thay đổi (nếu cần thiết) cho memcached nhiều hơn hoặc ít hơn. – Poe

+19

Couchbase nên được xem xét vì nó có một chế độ hoạt động đơn giản, được gọi là một nhóm (bucket) nhưng giúp quản lý dễ dàng hơn, quản lý số liệu thống kê, v.v. Toàn bộ thông tin: Tôi làm việc cho Couchbase. –

1

Chúng tôi đã sử dụng memcached ban đầu để lưu trữ dữ liệu. Trong dữ liệu phân vùng được ghi nhớ cho các ứng dụng khác nhau trong các nhóm khác nhau là một vấn đề thực. Ngoài ra, chúng tôi có yêu cầu xóa dữ liệu khỏi một nhóm. và sử dụng phong cách memcahed bucket.i đoán của nó linh hoạt hơn nhiều và hiệu quả để sử dụng phong cách memcache couchbase xô cho bộ nhớ đệm hơn là sử dụng memcahe.

+0

Đây là trường hợp sử dụng phổ biến cho người dùng bộ nhớ cache/memcache di chuyển đến Couchbase (với nhóm memcache và đôi khi với Couchbase).Tôi mời bạn xem tại http://www.couchbase.com/memcached –

0

Như Matt Ingenthron đã chỉ ra và Hari lưu ý rằng Couchbase hỗ trợ làm việc thay thế trực tiếp Memcached. Couchbase sử dụng memcached một cách không đàn hồi, như trong mỗi nút tham gia vào cụm memcache là kín đáo mà không có sự kiên trì, tức là chỉ một bộ nhớ đệm nhưng couchbase cũng cung cấp các loại thùng "Couchbase". Membase là một phần của mã cũng vì vậy Couchbase không chỉ phục vụ dữ liệu từ đĩa mà còn từ RAM và vẫn tồn tại trong khi tái tạo các nút khác và lưu vào đĩa khi các thay đổi được áp dụng. Tôi rất muốn giới thiệu Couchbase 3.x cho cả bộ nhớ đệm và sự kiên trì trong một dấu chân, hoặc nhiều dấu chân nếu bạn chỉ muốn có một lớp bộ nhớ đệm tách biệt với lớp kiên trì của bạn.

1

Bạn đã bao giờ cân nhắc chuyển toàn bộ cơ sở dữ liệu sang RAM bằng cách sử dụng một trong các giải pháp NoSQL trong bộ nhớ với sự kiên trì? Nó có thể mất ít dung lượng hơn so với cơ sở dữ liệu MySQL gốc của bạn, bởi vì nhiều giải pháp NoSQL thường có ít dấu chân hơn so với cơ sở dữ liệu SQL. Bên cạnh đó, nếu logic phía máy chủ là rất quan trọng đối với bạn, sau đó thử Tarantool vì nó có Lua scripting onboard và nên có một bộ nhớ khá nhỏ. Trong các trường hợp của tôi, cùng một dữ liệu trong Tarantool chiếm hai lần ít hơn trong MySQL. Điều này là bởi vì họ có chi phí nhỏ trên mỗi hàng và mỗi lĩnh vực và sử dụng Messagepack để lưu trữ dữ liệu.