目录
一.redis环境
1.redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.redis简单配置
redis:
host: localhost
port: 6379
二.转换为json
1.用fastjson
1.依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
2.测试
Map<String,Object> map =new HashMap<String,Object>();
List<Map<String,Object>> list= new ArrayList<>();
// 如果缓存有数据将存在redis里面的转为集合
// 1.得到缓存内容
String s = redisTemplate.opsForValue().get("list");
if (!StringUtils.isEmpty(s)) {
// 说明缓存中有数据 把数据转换为List<Student>
List<Student> list1 = JSONArray.parseArray(s,Student.class);
//并放到map中
map.put("list",list1);
//测试存的数据是什么样的
System.out.println("缓存"+list1);
//再把map存到list中
list.add(map);
//测试存的数据是什么样的
System.out.println(list+":list");
//返回List<Map>
return list;
}
}
3.测试数据返回的值
缓存[Student(id=7, name=嘻嘻, gender=null, age=null, state=null, clazzId=4,
year=2018, tel=null, birth=null, img=null, job=null, clazz=null),
Student(id=10, name=lx_yyds, gender=FEMALE, age=20, state=NO, clazzId=1, year=2020, tel=null, birth=null, img=null, job=null, clazz=null)]
如何让其变成json
不是json的原因就是存的时候不是json修改toString方法
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", gender=" + gender +
", age=" + age +
", state=" + state +
", clazzId=" + clazzId +
", year=" + year +
", tel=" + tel +
", birth=" + birth +
", img='" + img + '\'' +
", job='" + job + '\'' +
", clazz=" + clazz +
'}';
}
存
// 说明缓存中没有数据
List<Student> records = studentService.page(page).getRecords();
// 转换为json 放入缓存中
String list2 = JSON.toJSONString(records);
map.put("list",records);
list.add(map);
// 设置过期时间
redisTemplate.opsForValue().set("list",list2,100, TimeUnit.SECONDS);
return list;
2.用hutool-all
1.依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
2.存和取
@GetMapping("/get/hutool")
public List<Student> gethu(){
String s = redisTemplate.opsForValue().get("list");
// 缓存中存在
if (!StringUtils.isEmpty(s)) {
// string ->json
List<Student> students = (List<Student>) Convert.toList(s);
// 返回
return students;
}
// 查询所有数据
List<Student> list1 = studentService.list(null);
// 存入redis json->string
String s1 = Convert.toStr(list1);
redisTemplate.opsForValue().set("list",s1,100, TimeUnit.SECONDS);
// 返回
return list1;
}
3.返回测试
缓存没命中返回
缓存命中返回
修改toString之后缓存命中
注:springmvc中有这个 (本人较菜)