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

Stackexchange.Redis 'cháy và quên có đảm bảo giao hàng không?

Trên thực tế, giao thức Redis không thực sự hỗ trợ các hoạt động "cháy và quên". Ngoại trừ lưu lượng truy cập pub / sub, tất cả các lệnh của Redis đều được khớp với một câu trả lời và không có cách nào để yêu cầu máy chủ Redis bỏ qua câu trả lời.

Giờ đây, một số máy khách (như StackExchange.Redis) mô phỏng chế độ "cháy và quên" thông qua triển khai không đồng bộ của giao thức. Trên thực tế, chế độ "kích hoạt và quên" trong StackExchange.Redis rất giống với chế độ "không đồng bộ", ngoại trừ các câu trả lời chỉ bị loại bỏ khi chúng được nhận.

Nó có đáng tin cậy không? Chà, nó đảm bảo việc phân phối xa như TCP / IP đảm bảo việc giao hàng. Mạng sẽ rất cố gắng để truyền các gói (cuối cùng các gói sẽ được truyền lại nếu một số trong số chúng bị mất), nhưng tất cả đều do TCP xử lý.

Bây giờ nếu máy chủ gặp sự cố hoặc quyết định đóng kết nối, máy khách sẽ chỉ nhận biết được khi nó cố gắng đọc từ ổ cắm. StackExchange.Redis có thể vui vẻ tiếp tục gửi lệnh trên kết nối chết trong một thời gian. Nếu bạn có một người trung gian (chẳng hạn như Twemproxy), tình hình có thể còn tồi tệ hơn.

Nói cách khác, lưu lượng truy cập "cháy và quên" nói chung sẽ được gửi đến máy chủ và không có thông báo nào bị mất trên mạng, nhưng nếu bạn gặp sự cố máy chủ hoặc kết nối, một số lưu lượng có thể bị mất trước khi khách hàng có cơ hội nhận thấy nó. Tôi gọi đây là hành vi nỗ lực cao nhất.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Độ phức tạp về thời gian của zadd khi giá trị có điểm lớn hơn điểm cao nhất hiện có trong tập hợp được sắp xếp được nhắm mục tiêu

  2. Redis AOF fsync (LUÔN) so với cây LSM

  3. Nếu redis đã là một phần của ngăn xếp, tại sao Memcached vẫn được sử dụng cùng với Redis?

  4. Cách cài đặt Redis

  5. JedisPoolConfig không thể gán cho GenericObjectPoolConfig