2015-03-25 11 views
12

Như đã giải thích trong StackExchange.Redis Basics documentation, bạn có thể kết nối với nhiều máy chủ Redis và StackExchange.Redis sẽ tự động xác định thiết lập chính/phụ. Trích dẫn phần có liên quan:StackExchange.Redis sử dụng nhiều điểm cuối và kết nối như thế nào?

Một kịch bản phức tạp hơn có thể liên quan đến thiết lập chính/phụ; cho việc sử dụng này, chỉ cần xác định tất cả các nút mong muốn tạo nên mà tầng redis logic (nó sẽ tự động xác định các bậc thầy):

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379"); 

tôi thực hiện một thử nghiệm mà tôi đã gây ra một failover, như vậy mà các bậc thầy sẽ đi xuống một chút, khiến cho nô lệ cũ trở thành người chủ mới, và người chủ cũ trở thành nô lệ mới. Tôi nhận thấy rằng mặc dù sự thay đổi này, StackExchange.Redis tiếp tục gửi lệnh đến chủ cũ, khiến các thao tác ghi thất bại.

Các câu hỏi về các phần trên:

  1. như thế nào StackExchange.Redis quyết định thiết bị đầu cuối sử dụng không?
  2. Nên sử dụng nhiều điểm cuối (như trong ví dụ trên)?

Tôi cũng nhận thấy rằng đối với mỗi kết nối, StackExchange.Redis sẽ mở ra hai kết nối vật lý, một trong số đó là một số loại đăng ký. Điều này được sử dụng cho chính xác là gì? Nó được sử dụng bởi Sentinel trường hợp?

Trả lời

3

Điều gì nên xảy ra là nó sử dụng một số thứ (đặc biệt là cấu hình sao chép được xác định) để xác định lưu lượng truy cập chính và lưu lượng truy cập trực tiếp tại máy chủ thích hợp (tuân thủ tham số "máy chủ"). để "thích master", nhưng nó luôn gửi các phép ghi tới master).

Nếu nhận được lỗi "không thể ghi vào một người đọc chỉ đọc" (tôi không thể nhớ chính xác), nó sẽ cố gắng thiết lập lại cấu hình và sẽ tự động chuyển đổi để tôn trọng điều này. Thật không may, redis không phát sóng thay đổi cấu hình, do đó thư viện không thể phát hiện điều này trước thời hạn.

Lưu ý rằng nếu bạn sử dụng phương pháp thư viện để thay đổi chính, thì có thể khai thác pub/sub để phát hiện thay đổi đó ngay lập tức và tự động.

Nối lại kết nối thứ hai: đó là dành cho pub/sub; nó xoay vòng trước thời gian, theo mặc định nó cố gắng lắng nghe các chương trình phát sóng cấu hình cụ thể của thư viện.

+1

Cảm ơn bạn đã trả lời. Tôi không chắc chắn tôi làm theo ... những gì bạn có nghĩa là bằng các phương pháp thư viện để thay đổi chương trình phát sóng cấu hình chủ/thư viện cụ thể? Ngoài ra, khi tôi gây ra lỗi chuyển đổi master/slave, tôi thực sự đợi một vài giây và cố gắng gửi SET một lần nữa, nhiều lần, và nó luôn luôn gửi nó cho chủ cũ. – Gigi

+1

@Gigi Tôi sẽ phải điều tra vấn đề 'SET'; mặt khác: 'IServer.MakeMaster (...)' –

+0

@MarcGravell tham số 'server' mà bạn đề cập là gì? Tôi không thể tìm thấy nó ở loại ConfigurationOptions. –

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