接上一篇文章,项目工程搭建参考前一篇文章:
SpringBoot整合Redis,通过程序将对象写入redis_明明就很安静的博客-CSDN博客
上一篇文章是使用的是json方式将对象存入Redis,这里使用二进制的方式存储,上代码:
Redis工具类:
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Component
public class RedisTemplateUtils {
@Resource
private RedisTemplate redisTemplate;
/**
* 存入String类型
* @param key
* @param value
* @param timeOut
*/
public void setObject(String key, Object value, Long timeOut){
redisTemplate.opsForValue().set(key, value);
if (timeOut != null){
//设置Redis的key的有效期
redisTemplate.expire(key, timeOut, TimeUnit.SECONDS);
}
}
/**
* 获取String类型
* @param key
* @return
*/
public Object getObject(String key){
return redisTemplate.opsForValue().get(key);
}
}
这里有一个需要注意的地方:
//注入方式需要是使用@Resource注解,按照name注入,按照类型注入会报错 @Resource private RedisTemplateredisTemplate;
实体类:
import lombok.Data;
import java.io.Serializable;
@Data
public class User implements Serializable {
private String name;
private Integer age;
}
因为是二进制存储,需要用到序列化和反序列化,所以实体类要实现Serializable接口。
控制层:
import com.example.redis.redistudy.pojo.User;
import com.example.redis.redistudy.util.RedisTemplateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RedisTemplateController {
@Autowired
private RedisTemplateUtils redisTemplateUtils;
@GetMapping("/addUserSeri")
public String addUser(){
User user = new User();
user.setName("lisi");
user.setAge(20);
redisTemplateUtils.setObject("userLis",user, null);
return "存入成功";
}
@GetMapping("/getUserSeri")
public User getObject(String key){
System.out.println(key);
System.out.println(redisTemplateUtils.getObject(key));
return (User)redisTemplateUtils.getObject(key);
}
}
启动看一下效果:
最后总结一下Redis存储对象时,是使用json方式还是使用二进制的方式,这是需要分场景的:
json这种方式的好处是可以跨语言,目前很多语言都可以解析json,另外,如果需要查看Redis存储的对象,使用json的方式能够清晰的看到想要的数据。相反,二进制方式对于其他语言是无法解析的,这里的二进制只能用java语言解析,和平常所说的机器二进制是有区别的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)