在controller中注入redistemplate的时候报错找不到,我们需要写一个配置类:
/** * Redis 配置类 */ @Configuration public class RedisConfig { @Bean(name = "template") /* public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); // 设置 key 的序列化的方式 template.setKeySerializer(RedisSerializer.string()); // 设置 value 的序列化的方式 template.setValueSerializer(RedisSerializer.json()); // 设置 hash 的 key 的序列化的方式 template.setHashKeySerializer(RedisSerializer.string()); // 设置 hash 的 value 的序列化的方式 template.setHashValueSerializer(RedisSerializer.json()); template.afterPropertiesSet(); return template; }*/ public RedisTemplate<String, Object> template(RedisConnectionFactory factory) { // 创建RedisTemplate<String, Object>对象 RedisTemplate<String, Object> template = new RedisTemplate<>(); // 配置连接工厂 template.setConnectionFactory(factory); // 定义Jackson2JsonRedisSerializer序列化对象 Jackson2JsonRedisSerializer<Object> jacksonSeial = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会报异常 om.activateDefaultTyping( LaissezFaireSubTypeValidator.instance , ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.WRAPPER_ARRAY); jacksonSeial.setObjectMapper(om); StringRedisSerializer stringSerial = new StringRedisSerializer(); // redis key 序列化方式使用stringSerial template.setKeySerializer(stringSerial); // redis value 序列化方式使用jackson template.setValueSerializer(jacksonSeial); // redis hash key 序列化方式使用stringSerial template.setHashKeySerializer(stringSerial); // redis hash value 序列化方式使用jackson template.setHashValueSerializer(jacksonSeial); template.afterPropertiesSet(); return template; }
此时,传入的参数会报错,所以我们再加入这个依赖,别忘记在配置文件里面做一些配置:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
# Redis spring.redis.database = 11 spring.redis.host = localhost spring.redis.port = 6379