Springboot整合Redis的两种常见方案

 

spring整合Redis有两种方法,由浅到深,最基础的就是添加redis的maven依赖和在yml中添加redis的连接信息(一些其他的依赖省略不写)

 <dependency>
<groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

yml中的host根据你自己的host填写就好

好了,最基本的就好了,下面我们开始进行整合

第一种方法:使用json的序列化与反序列化

首先定义一个redisutils类

@Component
public class RedisUtils {
    //获取redis自带的模板,注入到容器中
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    public void  setString(String key,String value){
        setString(key,value,null);
    }
    //timeout表示超时时间
    public void  setString(String key,String value,Long timeout){
        stringRedisTemplate.opsForValue().set(key,value);
        if(timeout != null){
                stringRedisTemplate.expire(key,timeout,TimeUnit.SECONDS);
        }
    }
    public String  getString(String key){
        return stringRedisTemplate.opsForValue().get(key);
    }
}

其次我们定义一个Entiy,这里省略,然后我们在整合定一个Controller

@RestController
public class UserController {

    @Autowired
    private RedisUtils redisUtils;
    @GetMapping("/addUser")
    public String addUser(UserEntiy userEntiy){
        //强转为json格式
        String json = JSONObject.toJSONString(userEntiy);
        redisUtils.setString("UserEntiy",json);
        return "----------";
    }
    @RequestMapping("getUser")
    public UserEntiy getUser(String  key){
        String json = redisUtils.getString(key);
        UserEntiy userEntiy = JSONObject.parseObject(json, UserEntiy.class);
        return  userEntiy;
    }
}

最后定义一个启动类,就OK了。

第二种方法:使用redis自带的序列化

定义一个 RedisTemplateUtils类

@Component
public class RedisTemplateUtils {

    //这里用Resource根据名称查找,注入到容器中,使用Autowired会报错,
    @Resource
    private RedisTemplate<String,Object> redisTemplate;

    public void   setObject(String key,Object value){
        setObject(key,value,null);
    }
    public void  setObject(String key,Object value,Long timeout){
        redisTemplate.opsForValue().set(key,value);
        if(timeout != null){
            redisTemplate.expire(key,timeout,TimeUnit.SECONDS);
        }
    }
    public Object  getObject(String key){
        return redisTemplate.opsForValue().get(key);
    }
}

注意Controller的区别

@RestController
public class UserController {

    @Autowired
    private RedisUtils redisUtils;
    @Autowired
    private RedisTemplateUtils redisTemplateUtils;
    @GetMapping("/addUser")
    public String addUser(UserEntiy userEntiy){
        /*String json = JSONObject.toJSONString(userEntiy);
        redisUtils.setString("UserEntiy",json);*/
        redisTemplateUtils.setObject("userEntiy",userEntiy);
        return "----------";
    }
    @RequestMapping("getUser")
    public UserEntiy getUser(String  key){
        /*String json = redisUtils.getString(key);
        UserEntiy userEntiy = JSONObject.parseObject(json, UserEntiy.class);*/
        return (UserEntiy) redisTemplateUtils.getObject(key);
    }
}

注意:你定义的Entiy要实现序列化与反序列化implements Serializable;

          redisTemplate注入到容易使用Resource注解根据名称查找,注入到容器中,使用Autowired会报错。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值