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

tại sao Redis là luồng đơn (theo hướng sự kiện)

TL; DR :Một chuỗi đơn giúp redis đơn giản hơn và redis vẫn bị ràng buộc IO.

Bộ nhớ là I / O. Redis vẫn bị ràng buộc I / O. Khi redis chịu tải nặng và đạt yêu cầu tối đa mỗi giây, nó thường bị thiếu băng thông mạng hoặc băng thông bộ nhớ và thường không sử dụng nhiều CPU. Có một số lệnh nhất định mà điều này sẽ không đúng, nhưng đối với hầu hết các trường hợp sử dụng, lệnh redis sẽ bị ràng buộc chặt chẽ vào I / O bởi mạng hoặc bộ nhớ.

Trừ khi bộ nhớ và tốc độ mạng đột nhiên tăng nhanh hơn, việc sử dụng một luồng thường không phải là một vấn đề. Nếu bạn cần mở rộng quy mô vượt quá một hoặc một vài luồng (tức là:thiết lập chủ <-> slave <-> slave), bạn đang xem Redis Cluster. Trong trường hợp đó, bạn có thể thiết lập một phiên bản cụm trên mỗi lõi CPU nếu bằng cách nào đó, CPU của bạn bị đói và muốn tối đa hóa số luồng.

Tôi không rành về nguồn hoặc nội bộ của redis, nhưng tôi có thể thấy cách sử dụng một luồng đơn giúp dễ dàng thực hiện các hành động nguyên tử không khóa. Các luồng sẽ làm cho điều này phức tạp hơn và dường như không mang lại lợi ích lớn vì redis không bị ràng buộc bởi CPU. Việc triển khai đồng thời ở cấp trên phiên bản redis có vẻ là một giải pháp tốt và đó là điều mà Redis Sentinel và Redis Cluster giúp đỡ.

Điều gì xảy ra với các yêu cầu khác khi quá trình thực hiện lại mất nhiều thời gian?

Những yêu cầu khác sẽ chặn trong khi redis hoàn thành yêu cầu dài. Nếu cần, bạn có thể kiểm tra điều này bằng cách sử dụng client-pause lệnh.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sự cố khi chạy phiên bản OAuthd

  2. Cách sử dụng jackson thay vì JdkSerializationRedisSerializer trong mùa xuân

  3. Lưu trữ giá trị trả về của node.js setTimeout trong redis

  4. Nhận giá trị với đường ống jedis

  5. Cách làm cho Laravel hoạt động với cụm Redis trên AWS