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会报错。