JedisSocketFactory.createSocket phải trả về một socket đã kết nối, sẵn sàng mang lưu lượng Redis. Trong Jedis 5.2.0, ứng dụng cung cấp nhà máy đó và cấu hình máy khách Redis của nó tại đây:

var jedis = new Jedis(socksSocketFactory, redisConfig);

socksSocketFactory triển khai redis.clients.jedis.JedisSocketFactory, và redisConfig là JedisClientConfig của ứng dụng. Hãy sẵn sàng kết nối khi hàm khởi tạo chạy: nó có thể thực hiện xác thực và các thiết lập Redis khác ngay lập tức.

Theo dõi một socket từ lúc tạo đến khi bàn giao

Với tuyến SOCKS5 không xác thực, nhà máy có thể tạo một java.net.Socket với trung gian Proxy.Type.SOCKS rõ ràng, rồi kết nối tới máy chủ và cổng Redis. Hãy để đích chưa được phân giải nếu máy chủ SOCKS phải tự phân giải tên máy chủ.

Giới hạn nỗ lực kết nối và áp dụng thời gian chờ đọc dự kiến. Nếu kết nối thất bại, hãy đóng socket đó và báo JedisConnectionException; giao diện nhà máy không khai báo IOException được kiểm tra.

Nếu Redis yêu cầu TLS, hãy thiết lập và xác minh TLS trước khi trả lại socket. Không thể giả định rằng một cờ riêng sẽ biến đổi bất kỳ socket nào do nhà máy trả về. Với một nhóm, hãy lặp lại vòng đời này với socket mới ở mỗi lần gọi nhà máy, kể cả các kết nối thay thế.

Việc chọn HTTP trong một ProxySelector toàn cục không phải là cách triển khai thay thế cho công việc này. Redis gửi RESP qua socket của nó; nó không vì thế mà trở thành HTTP hay thương lượng CONNECT.

Bài viết liên quan