在使用 Spring Data Redis 操作 Redis 时,Spring 报出了 java.lang.NoClassDefFoundError: redis/clients/jedis/JedisClientConfig
异常:
@SpringBootTest
public class SpringRedisDemoApplicationTests {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Test
public void testConnect() {
ValueOperations<String, Object> operations = redisTemplate.opsForValue();
operations.set("name", "洛必达");
String name = (String) operations.get("name");
System.out.println(name);
}
}
后来查资料才知道 Spring Boot 从 2.0 开始弃用了 Jedis 作为 Redis 的客户端,而是用了 Lettuce。如果想要使用 Jedis,那么就要导入 Jedis 依赖库,假如还使用了 Jackson 的 JSON 序列化器,那么就要导入 jackson-databind 依赖库:
<dependencies>
<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>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>