Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis hiệu suất trên CPU đa lõi

Tôi đã xem trang web redis và thấy rằng redis không được thiết kế cho CPU đa lõi. Câu hỏi của tôi là, Tại sao nó lại như vậy?

Đó là một quyết định thiết kế.

Redis là một luồng với epoll / kqueue và chia tỷ lệ vô thời hạn về đồng thời I / O. [email protected] (người tạo ra Redis)

Lý do để chọn cách tiếp cận theo hướng sự kiện là đồng bộ hóa giữa các luồng đi kèm với chi phí ở cả phần mềm (độ phức tạp của mã) và mức phần cứng (chuyển đổi ngữ cảnh). Thêm vào đó, nút thắt cổ chai của Redis thường là mạng , không phải CPU. Mặt khác, kiến ​​trúc đơn luồng có những lợi ích riêng của nó (ví dụ:đảm bảo tính nguyên tử).

Do đó, các vòng lặp sự kiện có vẻ như là một thiết kế tốt để hiệu quả & có thể mở rộng hệ thống như Redis.

Ngoài ra, nếu có, làm cách nào chúng tôi có thể sử dụng 100% tài nguyên CPU với sự hỗ trợ của CPU đa lõi.

Cách tiếp cận của Redis để mở rộng quy mô trên nhiều lõi là sharding , chủ yếu cùng với Twemproxy.

Tuy nhiên, nếu vì lý do nào đó mà bạn vẫn muốn sử dụng cách tiếp cận đa luồng, hãy xem Thredis nhưng hãy đảm bảo rằng bạn hiểu ý nghĩa của những gì tác giả của nó đã làm (ví dụ:bạn không thể sử dụng nó như một bậc thầy sao chép).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chẩn đoán lỗi máy chủ redis không mong muốn

  2. Đẩy đến hàng đợi Laravel từ bên ngoài Laravel (NodeJS)

  3. Laravel:Làm thế nào để kiểm tra tính khả dụng của Redis?

  4. Redis lua script không hoạt động

  5. redis vs hazelcast