SpringBoot 集成redis
以前整合redis需要导入jedis redis依赖 还需要写一些redis连接类,连接池方法等,很麻烦
而现在springboot提供一些简单的操作方法
spring boot在1.5+的时候就不做对spring-boot-starter-redis做支持了,所以这里选用的spring-boot-starter-data-redis。
导入起步依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
springboot自动配置 redisTemplate 仅仅需要用到的时候 自动注入进去即可。
配置文件
spring.redis.host = 127.0.0.1 #spring.redis.password= # redis password spring.redis.port = 6379 spring.redis.pool.max-idle = 8 spring.redis.pool.min-idle = 0 spring.redis.pool.max-active = 8 spring.redis.pool.max-wait = -1 spring.redis.timeout = 60000
Controlle
@RequestMapping("users/{id}")
@ResponseBody
public User user(@PathVariable("id") int id ,User user){
user = userServiceimpl.selectByPrimaryKey(id);
return user;
}
service
@Service
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("getRedisTemplate")
private RedisTemplate<Object,Object> redisTemplet;
@Autowired
private UserMapper userMapper;
@Override
public User selectByPrimaryKey(Integer id) {
//查询缓存
User user = (User) redisTemplet.opsForValue().get("user");
//缓存中没有获取到则从数据中查询
if(user==null){
if (user==null){
user = userMapper.selectByPrimaryKey(id);
//存进缓存
redisTemplet.opsForValue().set("user",user);
System.out.println("db ======== ");
}
}else {
System.out.println("redis...");
}
return user;
}
接口
public interface UserService {
User selectByPrimaryKey(Integer id);
}
redisTempleate bean
@Configuration
public class RedisConfig {
@Autowired
private RedisTemplate redisTemplate;
@Bean
public RedisTemplate<Object,Object> getRedisTemplate(RedisTemplate redisTemplate){
redisTemplate.setKeySerializer(new StringRedisSerializer()); //字符串方式序列化在redis中 显示
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); //对象地址和json方式
return redisTemplate;
}
}