2010-11-19 30 views

Trả lời

42

Chừng nào bạn không khởi client Memcached mình nhưng bạn dựa vào Rails.cache API phổ biến, chuyển từ memcached để Redis chỉ là vấn đề của việc cài đặt redis-store và thay đổi cấu hình từ

config.cache_store = :memcached_store 

để

config.cache_store = :redis_store 

Thêm info about Rails.cache.

+1

Làm thế nào để người dùng có thể sử dụng Redis cho cả bộ đệm bộ nhớ đệm và công việc Sidekiq mà không hết bộ nhớ? Có thể sử dụng cùng một cá thể Redis để luôn duy trì công việc của Sidekiq, nhưng sử dụng một lần đầu tiên-trong-đầu ra cho các mảnh? – Mohamad

37

Tôi ghét gây rối với mục tiêu của mình, nhưng tôi khuyên bạn không nên sử dụng redis trên memcached cho bộ đệm đường ray chung.

Tôi sử dụng redis và resque rộng rãi trong một ứng dụng đường ray lớn và tôi nghĩ rằng nó sẽ là tốt đẹp để củng cố bộ nhớ đệm, redis liệu và resque thành một. Tôi gặp phải một vài vấn đề lớn:

  1. Trước hết, nó chậm hơn. Nó có thể hoàn toàn là cách sử dụng cụ thể của tôi, thư viện redis-store hoặc redis. Tôi sẽ không badmouth bất cứ điều gì và mileage của bạn có thể khác nhau, nhưng nó sẽ hút đổ rất nhiều thời gian chuyển sang redis khi memcached "chỉ hoạt động"
  2. Memcached là tốt đẹp vì nó rất dễ dàng để thêm máy chủ và sử dụng băm phù hợp để đạt được mục tiêu của bạn. Redis cũng có điều này, nhưng theo kinh nghiệm của tôi, rất khó để xử lý đồng thời redis như một kho dữ liệu nguyên khối trong một số phần của ứng dụng của tôi và trong các phần khác.

Chúc bạn may mắn với dự án của mình. Tôi yêu redis và memcached và sử dụng chúng trong tất cả các dự án của tôi, nhưng tôi để cho một trong những công việc như một máy chủ cấu trúc dữ liệu kick-ass và để cho người khác đá ass vào bộ nhớ đệm.

+5

http://seal-7.blogspot.com/2011/11/rails-benchmarking-reloaded.html –

+9

memcached có thông lượng nhiều hơn Redis như một cửa hàng khóa-giá trị đơn giản vì memcached là đa luồng và Redis là đơn luồng . Vì vậy, Redis sẽ sớm tiêu thụ 100% sử dụng một lõi CPU đạt hiệu suất cao nhất trong khi memcached sẽ sử dụng hạnh phúc như nhiều lõi CPU như bạn có và do đó quy mô cao hơn nhiều trong thông lượng tối đa của nó. Trên một hệ thống đơn lõi (những người sử dụng?) Redis có thể nhanh hơn, nhưng Redis thực sự chỉ mang lại lợi ích khi bạn sử dụng các loại dữ liệu bổ sung hoặc tính kiên trì hoặc các tính năng khác. – ColinM

+2

Điều này thực sự không giải quyết được câu hỏi, và hơn thế nữa tôi không nghĩ rằng kinh nghiệm một lần của bạn đảm bảo chống lại việc sử dụng Redis cho bộ nhớ đệm, vì có vẻ như rất nhiều người đang sử dụng nó thành công cho chính xác điều đó. – Yarin

2

Các phần gọn gàng của Redis bao gồm bộ nhớ đệm "danh sách dựa trên" những thứ - đẩy/popping những thứ từ danh sách này khi chúng xảy ra trong ứng dụng của bạn.

Thay vì hủy tuần tự hóa một giá trị lớn từ memcached, chỉnh sửa nó, sau đó tái serialize nó.

Điều này sẽ được thực hiện bằng mã ruby ​​trong bộ lọc tùy chỉnh, so với bộ nhớ cache đường cơ bản.

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