<!-- Jedis client (version 5.1.2 or later recommended) --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.1.2</version></dependency><!-- Lettuce client (version 6.3.0 or later recommended) --><dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId><version>6.3.0.RELEASE</version></dependency>
implementation 'redis.clients:jedis:5.1.2'implementation 'io.lettuce:lettuce-core:6.3.0.RELEASE'
Instance ID:Password format, and custom accounts use the Username@Password format. Instances with password-free authentication do not require a password.SELECT command to switch databases, in which case only DB0 can be used. If your business depends on multiple DBs, switch to a client that supports the SELECT command.import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.Jedis;public class JedisProxyExample {public static void main(String[] args) {// Connection parametersString host = "192.xx.xx.2"; // Instance VIP addressint port = 6379; // Instance portString password = "crs-xxxx:password"; // Default account password format: Instance ID:Password// Connection pool configurationJedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(200); // Maximum number of connectionspoolConfig.setMaxIdle(200); // Maximum number of idle connectionspoolConfig.setMinIdle(50); // Minimum number of idle connectionspoolConfig.setMaxWaitMillis(3000); // Maximum wait time to obtain a connection (in milliseconds)poolConfig.setTestOnBorrow(false); // Do not test when obtaining a connectionpoolConfig.setTestOnReturn(false); // Do not test when returning a connectionpoolConfig.setTestWhileIdle(true); // Test connection validity when idlepoolConfig.setLifo(false); // Disable LIFO and use FIFO to avoid uneven load distribution// Create a connection poolJedisPool jedisPool = new JedisPool(poolConfig,host,port,2000, // Connection timeout (in milliseconds)2000, // Read timeout (in milliseconds)password);// Use a connection pool to perform operationstry (Jedis jedis = jedisPool.getResource()) {// Write data.jedis.set("name", "Distributed Cache");// Read data.String value = jedis.get("name");System.out.println("get name: " + value);// Set a Key with an expiration time.jedis.setex("session:user123", 3600, "session_data");// Hash operationsjedis.hset("user:1001", "name", "Zhang San");jedis.hset("user:1001", "age", "28");System.out.println("user name: " + jedis.hget("user:1001", "name"));// List operationsjedis.lpush("queue:tasks", "task1", "task2", "task3");String task = jedis.rpop("queue:tasks");System.out.println("dequeued task: " + task);}// Destroy the connection pool when the application shuts down.jedisPool.close();}}
import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.Jedis;public class JedisCustomAccountExample {public static void main(String[] args) {String host = "192.xx.xx.2";int port = 6379;String password = "myuser@MyPassword"; // Custom account in proxy mode: the entire "username@password" string is passed as the password.JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(200);poolConfig.setMaxIdle(200);poolConfig.setMinIdle(50);poolConfig.setLifo(false);// Custom account in proxy mode: pass the entire "username@password" string as the password without setting the username separately.JedisPool jedisPool = new JedisPool(poolConfig,host,port,2000,2000,password // username@password);try (Jedis jedis = jedisPool.getResource()) {jedis.set("key", "value");System.out.println(jedis.get("key"));}jedisPool.close();}}
spring:redis:host: 192.xx.xx.2port: 6379password: crs-xxxx:passwordtimeout: 2000msjedis:pool:max-active: 200max-idle: 200min-idle: 50max-wait: 3000ms
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.RedisStandaloneConfiguration;import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;import redis.clients.jedis.JedisPoolConfig;import java.time.Duration;@Configurationpublic class RedisConfig {@Beanpublic JedisConnectionFactory jedisConnectionFactory() {// Standalone configurationRedisStandaloneConfiguration standaloneConfig = new RedisStandaloneConfiguration();standaloneConfig.setHostName("192.xx.xx.2");standaloneConfig.setPort(6379);standaloneConfig.setPassword("crs-xxxx:password");// Connection pool configurationJedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(200);poolConfig.setMaxIdle(200);poolConfig.setMinIdle(50);poolConfig.setMaxWaitMillis(3000);poolConfig.setLifo(false); // FIFO mode// Client configurationJedisClientConfiguration clientConfig = JedisClientConfiguration.builder().connectTimeout(Duration.ofMillis(2000)).readTimeout(Duration.ofMillis(2000)).usePooling().poolConfig(poolConfig).build();return new JedisConnectionFactory(standaloneConfig, clientConfig);}@Beanpublic RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, String> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new StringRedisSerializer());return template;}}
import io.lettuce.core.RedisClient;import io.lettuce.core.RedisURI;import io.lettuce.core.SocketOptions;import io.lettuce.core.api.StatefulRedisConnection;import io.lettuce.core.api.sync.RedisCommands;import io.lettuce.core.support.ConnectionPoolSupport;import org.apache.commons.pool2.impl.GenericObjectPool;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import java.time.Duration;public class LettuceProxyExample {public static void main(String[] args) {// Build a RedisURIRedisURI redisUri = RedisURI.builder().withHost("192.xx.xx.2").withPort(6379).withPassword("crs-xxxx:password".toCharArray()).withTimeout(Duration.ofSeconds(2)).build();// Socket configuration (key parameters)SocketOptions socketOptions = SocketOptions.builder().connectTimeout(Duration.ofSeconds(2)) // Connection timeout.keepAlive(SocketOptions.KeepAliveOptions.builder().enable() // Enable TCP Keepalive.idle(Duration.ofSeconds(30)) // Start probing after 30 seconds of idle time.interval(Duration.ofSeconds(10)) // Probing interval: 10 seconds.count(3) // Number of probes: 3.build()).tcpUserTimeout(SocketOptions.TcpUserTimeoutOptions.builder().enable() // Enable tcpUserTimeout.tcpUserTimeout(Duration.ofSeconds(30)) // 30-second timeout.build()).build();// Create a RedisClientRedisClient redisClient = RedisClient.create();redisClient.setOptions(io.lettuce.core.ClientOptions.builder().socketOptions(socketOptions).build());// Connection pool configurationGenericObjectPoolConfig<StatefulRedisConnection<String, String>> poolConfig =new GenericObjectPoolConfig<>();poolConfig.setMaxTotal(200);poolConfig.setMaxIdle(200);poolConfig.setMinIdle(50);poolConfig.setMaxWaitMillis(3000);poolConfig.setLifo(false); // FIFO mode// Create a connection poolGenericObjectPool<StatefulRedisConnection<String, String>> pool =ConnectionPoolSupport.createGenericObjectPool(() -> redisClient.connect(redisUri),poolConfig);// Use a connection pool to perform operationstry (StatefulRedisConnection<String, String> connection = pool.borrowObject()) {RedisCommands<String, String> sync = connection.sync();sync.set("name", "Distributed Cache");String value = sync.get("name");System.out.println("get name: " + value);sync.hset("user:1001", "name", "Zhang San");sync.hset("user:1001", "age", "28");System.out.println("user name: " + sync.hget("user:1001", "name"));} catch (Exception e) {e.printStackTrace();}// Clean up resources when the application shuts down.pool.close();redisClient.shutdown();}}
spring:redis:host: 192.xx.xx.2port: 6379password: crs-xxxx:passwordtimeout: 2000mslettuce:pool:max-active: 200max-idle: 200min-idle: 50max-wait: 3000ms
import io.lettuce.core.ClientOptions;import io.lettuce.core.SocketOptions;import io.lettuce.core.resource.ClientResources;import io.lettuce.core.resource.DefaultClientResources;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import java.time.Duration;@Configurationpublic class LettuceRedisConfig {@Bean(destroyMethod = "shutdown")public ClientResources clientResources() {return DefaultClientResources.create();}@Beanpublic LettuceConnectionFactory lettuceConnectionFactory(ClientResources clientResources) {// Socket configurationSocketOptions socketOptions = SocketOptions.builder().connectTimeout(Duration.ofSeconds(2)).keepAlive(SocketOptions.KeepAliveOptions.builder().enable().idle(Duration.ofSeconds(30)).interval(Duration.ofSeconds(10)).count(3).build()).tcpUserTimeout(SocketOptions.TcpUserTimeoutOptions.builder().enable().tcpUserTimeout(Duration.ofSeconds(30)).build()).build();ClientOptions clientOptions = ClientOptions.builder().socketOptions(socketOptions).build();// Connection pool configurationGenericObjectPoolConfig<?> poolConfig = new GenericObjectPoolConfig<>();poolConfig.setMaxTotal(200);poolConfig.setMaxIdle(200);poolConfig.setMinIdle(50);poolConfig.setMaxWaitMillis(3000);poolConfig.setLifo(false);// Lettuce client configurationLettucePoolingClientConfiguration lettuceConfig =LettucePoolingClientConfiguration.builder().commandTimeout(Duration.ofSeconds(2)).clientOptions(clientOptions).clientResources(clientResources).poolConfig(poolConfig).build();// Create a connection factory.org.springframework.data.redis.connection.RedisStandaloneConfiguration standaloneConfig =new org.springframework.data.redis.connection.RedisStandaloneConfiguration();standaloneConfig.setHostName("192.xx.xx.2");standaloneConfig.setPort(6379);standaloneConfig.setPassword("crs-xxxx:password");return new LettuceConnectionFactory(standaloneConfig, lettuceConfig);}@Beanpublic RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, String> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new StringRedisSerializer());return template;}}
import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.Jedis;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManagerFactory;import java.io.FileInputStream;import java.security.KeyStore;public class JedisSSLExample {public static void main(String[] args) throws Exception {String host = "192.xx.xx.2";int port = 6379;String password = "crs-xxxx:password";// Load the CA certificate (JKS format).KeyStore trustStore = KeyStore.getInstance("JKS");try (FileInputStream fis = new FileInputStream("/path/to/ca.jks")) {trustStore.load(fis, "password".toCharArray());}TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());tmf.init(trustStore);SSLContext sslContext = SSLContext.getInstance("TLS");sslContext.init(null, tmf.getTrustManagers(), null);// Connection pool configurationJedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(200);poolConfig.setMaxIdle(200);poolConfig.setMinIdle(50);poolConfig.setLifo(false);// Create an SSL connection pool.JedisPool jedisPool = new JedisPool(poolConfig,host,port,2000,2000,password,true, // Enable SSL.sslContext.getSocketFactory(),null, // SSL parameternull // Hostname verifier);try (Jedis jedis = jedisPool.getResource()) {jedis.set("ssl_test", "encrypted");System.out.println(jedis.get("ssl_test"));}jedisPool.close();}}
Parameter | Description | Recommended Value |
maxTotal | Maximum Number of Connections | 200 |
maxIdle | Maximum number of idle connections. | 200 |
minIdle | Minimum number of free connections. | 50 |
maxWaitMillis | Maximum wait time for obtaining a connection (ms). | 3000 |
lifo | Connection acquisition policy | false (FIFO to prevent uneven load distribution) |
connectTimeout | Connection timeout (ms) | 2000 |
readTimeout | Read timeout (ms) | 2000 |
Parameter | Description | Recommended Value |
keepAlive.idle | Idle duration before probing starts | 30 seconds |
keepAlive.interval | Probing interval. | 10 seconds |
keepAlive.count | Number of Probings. | 3 times |
tcpUserTimeout | TCP user timeout | 30 seconds |
maxTotal and maxIdle are set appropriately.lifo is set to false (FIFO mode).minIdle is set appropriately to avoid the overhead of cold connection establishment.Was this page helpful?
You can also Contact sales or Submit a Ticket for help.
Help us improve! Rate your documentation experience in 5 mins.
Feedback