SpringBoot 集成redis

112 阅读1分钟

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;
    }


}