我用的是springboot 自己配置了一个Redistempate的实现
@Configuration
public class Qi7RedisConfig {
@Bean
public RedisTemplate<String , Integer> codeRedisTemplate(){
//自定义factory 主要是这三句话
var factory = new LettuceConnectionFactory();
factory.setDatabase(1); //指定缓存到几号redis数据库
factory.afterPropertiesSet();
// 下面这些就是指定序列化方式了 有兴趣可以看一下 不指定也有默认的序列化方式
RedisTemplate<String, Integer> template = new RedisTemplate<>();
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer<String> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(String.class);
ObjectMapper om = new ObjectMapper();
om.setSerializationInclusion(JsonInclude.Include.NON_NULL);
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setConnectionFactory(factory);
//key的序列化方式
template.setKeySerializer(redisSerializer);
//value的序列化方式
template.setValueSerializer(jackson2JsonRedisSerializer);
//value hashmap序列化
template.setHashValueSerializer(jackson2JsonRedisSerializer);
return template;
}
}
接下来就是自动注入了
//自动注入 注意泛型需要保持一致
@Autowired
private RedisTemplate<String , Integer> codeRedis;
private Logger log = LoggerFactory.getLogger(UserController.class);
Integer code = NumberFactory.generatedNumber(6);
//缓存到redis
codeRedis.opsForValue().set(id , code , Duration.ofMinutes(3));
return new Result(code , Result.Status.OK , "getcode success");
现在就可以打开redis client看是否缓存到指定的库了