JAVA使用redis添加和获取list集合缓存
1.创建缓存的类对象
@Data
public class WorkshopPersonToProcessVO {
private Long id;
private String username;
private String nickname;
private Long workshopId;
private Long processId;
private String processName;
}
2.service层创建方法
List<WorkshopPersonToProcessVO> getWorkshopPersonToProcess(boolean isRefresh);
3.impl层实现方法
3.1缓存定义
private final RedisTemplate redisTemplate;
private final String PersonToProcessKey="PersonToProcessKey";
3.2将list添加进缓存
public List<WorkshopPersonToProcessVO> setWorkshopPersonToProcess(){
String key=PersonToProcessKey;
List<WorkshopPersonToProcessVO> list=this.baseMapper.getWorkshopPersonToProcess();
if(list.size()>0){
redisTemplate.opsForValue().set(key,JSON.toJSONString(list),7, TimeUnit.DAYS);
return list;
}
return new ArrayList<>();
}
3.3根据是否刷新缓存选择从缓存获取还是重新添加缓存
public List<WorkshopPersonToProcessVO> getWorkshopPersonToProcess(boolean isRefresh){
if(isRefresh){
return setWorkshopPersonToProcess();
}
String key=PersonToProcessKey;
if(redisTemplate.hasKey(key)){
ValueOperations<String, String> operations = redisTemplate.opsForValue();
String json=operations.get(key);
return JSONObject.parseArray(json, WorkshopPersonToProcessVO.class);
}else{
return setWorkshopPersonToProcess();
}
}
3.4controller层
@GetMapping("/get_cache_all/{workshopId}/{isRefresh}")
public Result getWorkshopPersonToProcess(@PathVariable("isRefresh")boolean isRefresh){
return Result.success(basicWorkshopPersonMService.getWorkshopPersonToProcess(isRefresh));
}