Spring 版本爲 2.1.5.RELEASE
整合依賴
<!--redis的starter--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version> </dependency>
在yml文件中配置redis
#TODO redis 配置
redis:
database: 0
host: 127.0.0.1
port: 6379
timeout: 2000s
# password: root
編寫 RedisConfig 配置類
@Configuration
public class RedisConfig {
@Bean(name = "adminRedisTemplate")
public RedisTemplate<String, Object> redisTemplate (RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String,Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(redisConnectionFactory);
/*使用Jackson2JsonRedisSerializer來序列化和反序列化redis的value的值(默認使用的是JDK序列化方式)*/
Jackson2JsonRedisSerializer<Object> json = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
json.setObjectMapper(objectMapper);
/*使用StringRedisSerializer來序列化和反序列化redis的key值*/
RedisSerializer redisSerializer = new StringRedisSerializer();
/*value*/
template.setValueSerializer(json);
template.setHashValueSerializer(json);
/*key*/
/*key的序列化採用StringRedisSerializer*/
template.setKeySerializer(redisSerializer);
template.setHashKeySerializer(new StringRedisSerializer());
template.afterPropertiesSet();
return template;
}
}
編寫通用的RedisServcie (方便在其他的業務類中直接注入@Autowired)
@Service
public class RedisService<T> {
@Autowired
@Qualifier("adminRedisTemplate")
private RedisTemplate<String, Object> redisTemplate;
public void setObj(String key, T value) {
redisTemplate.opsForValue().set(key, value);
}
public T getObj(String key) {
return (T) redisTemplate.opsForValue().get(key);
}
}
在業務controller中測試效果
@Autowired
private RedisService<Admin> redisService;
@RequestMapping(value = "/testAdminRedis")
public String testAdminRedis(){
Admin admin = new Admin();
admin.setAdmName("測試admin");
admin.setAdmPsw("123");
admin.setAdmLastLoginTime(new Date());
redisService.setObj("admin01", admin);
return admin.toString();
}
@RequestMapping(value = "/getAdminMessage")
@ResponseBody
public String getAdminMessage() {
Admin admin = redisService.getObj("admin01");
return JSON.toJSONString(admin);
}