通过客户端连接方式 Spring Boot 集成 Lettuce Redis 客户端 SpringBoot从2.0起默认使用lettuce客户端进行连接。 此次使用的版本:springboot:2.7.4,lettuce:6.1.9。 1.在 Spring Boot 项目的 pom.xml 文件中添加如下依赖: org.springframework.boot springbootstarterdataredis org.springframework.boot springbootstarterweb 2.在application.properties配置文件中加上redis相关配置。 spring.redis.hostyourredishost spring.redis.database0 spring.redis.passwordyourpassword spring.redis.portyourredisport 将 yourredishost 替换为 Redis 服务器的主机名,yourredisport 替换为 Redis 服务器的端口号。Redis 服务器有密码,需要设置 spring.redis.password。 3.做好以上准备工作之后,在项目配置类中创建 RedisTemplate Bean,并配置 Lettuce Redis 连接工厂。 @Configuration public class RedisConfiguration { @Bean public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) { RedisTemplate template new RedisTemplate<>(); template.setConnectionFactory(lettuceConnectionFactory); //使用Jackson2JsonRedisSerializer替换默认的JdkSerializationRedisSerializer来序列化和反序列化redis的value值 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper mapper new ObjectMapper(); mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NONFINAL, JsonTypeInfo.As.PROPERTY); jackson2JsonRedisSerializer.setObjectMapper(mapper); StringRedisSerializer stringRedisSerializer new StringRedisSerializer(); //key采用String的序列化方式 template.setKeySerializer(stringRedisSerializer); // hash的key也采用String的序列化方式 template.setHashKeySerializer(stringRedisSerializer); // value序列化方式采用jackson template.setValueSerializer(jackson2JsonRedisSerializer); // hash的value序列化方式采用jackson template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } } 4.测试Redis,并进行读写数据。 @Service public class RedisOperator { @Autowired private RedisTemplate redisTemplate; / 普通缓存获取 @param key 键 @return 值 / public Object get(String key){ return keynull?null:redisTemplate.opsForValue().get(key); } / 普通缓存放入 @param key 键 @param value 值 @return true成功 false失败 / public boolean set(String key,Object value) { try { redisTemplate.opsForValue().set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } } } @RestController public class redisController { @Autowired private RedisOperator redisOperator; @GetMapping("/setKey") @ResponseBody public String setKey(String key, String value) { redisOperator.set(key, value); return "Succeed to write [" + key + "" + redisOperator.get(key) +"]"; } @GetMapping("/getKey") @ResponseBody public String getKey(String key) { return redisOperator.get(key) + ""; } } 测试:curl {IP}:{PORT}/setKey?keyabc2&valueccd3 输出:Succeed to write [abc2ccd3]