Jedis 是一个简单易用的 Redis Java 客户端,它提供了同步阻塞的 API 来操作 Redis,适合在单线程或低并发场景下使用。
版本推荐
jedis 推荐使用5.1.2,连接模式为单机模式。
说明:
腾讯云通过 VPC IP 代理层统一屏蔽了 Redis 底层架构的复杂性(分片/高可用)。客户端访问腾讯云 Redis 实例时,无需配置集群或哨兵模式,而是像连接单节点 Redis 一样,直接访问腾讯云提供的统一入口(VPC IP)。
参数配置
参数名 | 类型 | 默认值 | 解释 | 推荐值 |
connectTimeout | int | 2000ms | 设置连接超时时间 | 3000ms |
readTimeout | int | 2000ms | 设置命令超时时间 | 2000ms |
poolMinIdle | int | 无 | 连接池最小空闲连接数 | 50 |
poolMaxIdle | int | 无 | 连接池最大空闲连接数 | 200 |
poolMaxTotal | int | 无 | 连接池最大连接数 | 200 |
application.properties 格式
tencent.redis.host=XX.XX.XX.XXtencent.redis.port=6379tencent.redis.database=0tencent.redis.password=XXXXtencent.redis.connect.timeout=3000tencent.redis.read.timeout=2000tencent.redis.pool.minSize=50tencent.redis.pool.maxSize=200
application.yml 格式
tencent:redis:host: XX.XX.XX.XXport: 6379database: 0password: XXXXconnect:timeout: 3000read:timeout: 2000pool:minSize: 50maxSize: 200
代码示例
Pom 配置
<!-- 引入spring-data-redis组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><!--spring boot 2.0之后默认lettuce客户端, 使用jedis时需要排包--><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><!-- 引入jedis依赖包 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.1.2</version></dependency>
参考代码
Jedis 连接池默认采用 LIFO(后进先出)配置,但实际运行中,因各连接响应时间不同,易导致连接建立不均衡。为解决此问题,建议将 LIFO 配置改为 FIFO(先进先出),以确保连接建立顺序公平,提升系统稳定性和性能。
import java.time.Duration;import org.springframework.beans.factory.annotation.Value;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 redis.clients.jedis.JedisPoolConfig;@Configurationpublic class JedisConfig {@Value("${tencent.redis.host}")private String redisHost;@Value("${tencent.redis.port:6379}")private Integer redisPort = 6379;@Value("${tencent.redis.database:0}")private Integer redisDatabase = 0;@Value("${tencent.redis.password:}")private String redisPassword;@Value("${tencent.redis.connect.timeout:3000}")private Integer redisConnectTimeout = 3000;@Value("${tencent.redis.read.timeout:2000}")private Integer redisReadTimeout = 2000;@Value("${tencent.redis.pool.minSize:50}")private Integer redisPoolMinSize = 50;@Value("${tencent.redis.pool.maxSize:200}")private Integer redisPoolMaxSize = 200;@Beanpublic RedisConnectionFactory redisConnectionFactory(JedisClientConfiguration clientConfiguration) {RedisStandaloneConfiguration standaloneConfiguration = new RedisStandaloneConfiguration();standaloneConfiguration.setHostName(redisHost);standaloneConfiguration.setPort(redisPort);standaloneConfiguration.setDatabase(redisDatabase);standaloneConfiguration.setPassword(redisPassword);return new JedisConnectionFactory(standaloneConfiguration, clientConfiguration);}@Beanpublic JedisClientConfiguration clientConfiguration() {JedisClientConfiguration clientConfiguration = JedisClientConfiguration.builder().connectTimeout(Duration.ofMillis(redisConnectTimeout)).readTimeout(Duration.ofMillis(redisReadTimeout)).usePooling().poolConfig(redisPoolConfig()).build();return clientConfiguration;}private JedisPoolConfig redisPoolConfig() {JedisPoolConfig poolConfig = new JedisPoolConfig();//连接池的最小连接数poolConfig.setMinIdle(redisPoolMinSize);//连接池的最大空闲连接数poolConfig.setMaxIdle(redisPoolMaxSize);//连接池的最大连接数poolConfig.setMaxTotal(redisPoolMaxSize);//创建连接时校验有效性(ping),默认falsepoolConfig.setTestOnCreate(false);//获取连接时校验有效性(ping),默认false,业务量大时建议设置为false减少开销poolConfig.setTestOnBorrow(true);//归还连接时校验有效性(ping),默认false,业务量大时建议设置为false减少开销poolConfig.setTestOnReturn(false);//关闭lifo,将 LIFO 配置改为FIFO(先进先出),以确保连接建立顺序公平poolConfig.setLifo(false);return poolConfig;}}