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

Hiệu suất SCAN và KEYS trong Redis

Bạn không nên quan tâm đến việc thực thi lệnh hiện tại mà là ảnh hưởng đến tất cả các lệnh khác, vì Redis xử lý các lệnh bằng một luồng duy nhất (tức là trong khi một lệnh đang được thực thi thì tất cả những lệnh khác cần phải đợi cho đến khi việc thực thi một lệnh kết thúc).

Trong khi các phím keys hoặc scan có thể cung cấp cho bạn hiệu suất tương tự hoặc giống hệt nhau được thực thi một mình trong trường hợp của bạn, một số mili giây chặn Redis sẽ làm giảm đáng kể I / O tổng thể.

Đây là lý do chính để sử dụng các khóa keys cho mục đích phát triển và scan trên môi trường sản xuất.

OP cho biết:

"Mặc dù khóa hoặc quét có thể cung cấp cho bạn hiệu suất tương tự hoặc giống hệt nhau được thực hiện riêng trong trường hợp của bạn, một số mili giây chặn Redis sẽ làm giảm đáng kể I / O tổng thể." - Câu này dường như chỉ ra rằng một lệnh chặn Redis, còn lệnh kia thì không, điều này không thể xảy ra. Nếu tôi được đảm bảo 100 kết quả từ cuộc gọi đến KEYS, thì điều đó tệ hơn SCAN ở điểm nào? Tại sao bạn cảm thấy rằng một lệnh hữu ích hơn để chặn?

Sẽ có một sự khác biệt tốt khi bạn có thể phân trang tìm kiếm. Việc buộc phải lấy 100 chìa khóa trong một lần vượt qua không giống với việc có thể thực hiện phân trang và nhận 100 chìa khóa, 10 x 10 (hoặc 50 và 50). Sự gián đoạn rất nhỏ này có thể cho phép các lệnh khác do lớp ứng dụng gửi đến được Redis xử lý . Xem tài liệu chính thức của Redis nói gì về điều này:

Vì các lệnh này cho phép lặp lại gia tăng, chỉ trả về số lượng phần tử nhỏ cho mỗi lần gọi, chúng có thể được sử dụng trong sản xuất mà không có nhược điểm của các lệnh như KEYS hoặc SMEMBERS có thể chặn máy chủ trong một thời gian dài (thậm chí vài giây) khi được gọi chống lại bộ sưu tập khóa lớn hoặc các phần tử

.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kết nối lại với 127.0.0.1:6379 không thành công - kết nối ECONNREFUSED

  2. có thể gọi các hàm lua được định nghĩa trong các tập lệnh lua khác trong redis không?

  3. Kết nối với AWS ElastiCache bằng Mã hóa In-Transit

  4. Khu vực thông báo và tin tức bằng cách sử dụng Redis

  5. Cách kết nối lại máy khách redis sau khi máy chủ redis khởi động lại / scale