SpringBoot集成Lettuce 本章介绍使用同一VPC内弹性云主机ECS上的SpringBoot集成Lettuce实例的方法。 前提条件 已成功申请Redis实例,且状态为“运行中”。 已创建弹性云主机,创建弹性云主机的方法,请参见《弹性云主机用户指南》。 如果弹性云主机为Linux系统,该弹性云主机必须已经安装java编译环境。 操作步骤 步骤 1 查看并获取待连接Redis实例的IP地址和端口。 具体步骤请参见查看实例信息。 步骤 2 登录弹性云主机。 步骤 3 首先使用maven在pom.xml添加如下依赖。 说明 SpringBoot从2.0起默认使用lettuce客户端进行连接。 此次使用的版本:springboot:2.6.6,lettuce:6.1.8。 org.springframework.boot springbootstarterweb org.springframework.boot springbootstarterdataredis 步骤 4 使用SpringBoot集成Lettuce连接实例。 Springboot+Lettuce单连方式连接Redis单机/主备/Proxy集群示例。 a. 在application.properties配置文件中加上redis相关配置。 spring.redis.hosthost spring.redis.database0 spring.redis.passwordpwd spring.redis.portport b. Redis配置类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; } c. Redis操作类RedisUtil。 / 普通缓存获取 @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; } } d. 编写controller类进行测试。 @RestController public class HelloRedis { @Autowired RedisUtil redisUtil; @RequestMapping("/setParams") @ResponseBody public String setParams(String name) { redisUtil.set("name", name); return "success"; } @RequestMapping("/getParams") @ResponseBody public String getParams(String name) { System.out.println("" + name + ""); String retName redisUtil.get(name) + ""; return retName; } } SpringBoot+Lettuce连接池方式连接Redis单机/主备/Proxy集群示例。 e. 在以上maven依赖的基础上添加以下依赖。 org.apache.commons commonspool2 f. 在application.properties配置文件中加上redis相关配置。 spring.redis.hosthost spring.redis.database0 spring.redis.passwordpwd spring.redis.portport