最近在做一些项目对redis性能要求比较高的项目,发现在压测过程中redis成为了性能瓶颈。然而,redis服务器占用非常低,应用服务器、发压机性能余量也非常高,TPS就是上不去。于是,笔者将矛头指向了spring-boot-starter-data-redis,不管怎么配置lettuce连接池,性能提升都不明显。于是去了解了一下spring-boot-starter-data-redis的实现,它的实现有两种,一种是lettuce,一种是jedis。关于这两种的对比,参考这篇文档吧。【入门篇】1.5 redis 客户端Jedis和Lettuce对比详解_lettuce jedis-优快云博客
spring-boot-starter-data-redis默认的实现是lettuce,如果要更换为jedis.按如下步骤操作:
1. 配置client-type
spring.redis.client-type=jedis
2. 修改连接池配置
#spring.redis.lettuce.pool.max-active=50
#spring.redis.lettuce.pool.max-wait=10s
#spring.redis.lettuce.pool.max-idle=50
#spring.redis.lettuce.pool.min-idle=5
# 将lettuce连接池改为jedis连接池
spring.redis.jedis.pool.max-active=50
spring.redis.jedis.pool.max-wait=10s
spring.redis.jedis.pool.max-idle=50
spring.redis.jedis.pool.min-idle=5
3. 修改pom文件,将lettuce-core从spring-boot-starter-data-redis中剔除,并添加jedis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
4. 如果配置类中有使用LettuceConnectionFactory也要改为JedisConnectionFactory