JedisSocketFactory.createSocket harus mengembalikan socket tersambung yang siap membawa lalu lintas Redis. Di Jedis 5.2.0, aplikasi menyediakan pabrik itu dan konfigurasi klien Redis-nya di sini:

var jedis = new Jedis(socksSocketFactory, redisConfig);

socksSocketFactory mengimplementasikan redis.clients.jedis.JedisSocketFactory, dan redisConfig adalah JedisClientConfig milik aplikasi. Bersiaplah untuk tersambung saat konstruktor berjalan: ia dapat melakukan autentikasi dan penyiapan Redis lain segera.

Ikuti satu socket dari pembuatan hingga penyerahan

Untuk rute SOCKS5 tanpa autentikasi, pabrik dapat membuat java.net.Socket dengan perantara Proxy.Type.SOCKS eksplisit, lalu tersambung ke host dan port Redis. Biarkan tujuan belum diresolusi jika server SOCKS yang harus meresolusi nama host.

Batasi upaya koneksi dan terapkan batas waktu baca yang dimaksud. Jika koneksi gagal, tutup socket itu dan laporkan JedisConnectionException; antarmuka pabrik tidak mendeklarasikan IOException yang diperiksa.

Jika Redis memerlukan TLS, bentuk dan verifikasi TLS sebelum mengembalikan socket. Tidak dapat diasumsikan bahwa flag terpisah akan mengubah socket sembarang yang dikembalikan pabrik. Untuk pool, ulangi siklus hidup ini dengan socket baru pada setiap pemanggilan pabrik, termasuk koneksi pengganti.

Pemilihan HTTP dalam ProxySelector global bukan implementasi alternatif dari pekerjaan ini. Redis mengirim RESP melalui socket-nya; ia tidak dengan demikian menjadi HTTP atau menegosiasikan CONNECT.

Artikel terkait