JAVA使用redis添加和获取list集合缓存
1.创建缓存的类对象
java
@Data
public class WorkshopPersonToProcessVO {
private Long id;
/**
* 用户名称
*/
private String username;
/**
* 昵称
*/
private String nickname;
/**
* 车间id
*/
private Long workshopId;
/**
* 工序id
*/
private Long processId;
/**
* 工序名称
*/
private String processName;
}
2.service层创建方法
java
/**
* 获取用户工序车间所有列表
* @param isRefresh
* @return
*/
List<WorkshopPersonToProcessVO> getWorkshopPersonToProcess(boolean isRefresh);
3.impl层实现方法
3.1缓存定义
java
/**
* 缓存定义
*/
private final RedisTemplate redisTemplate;
private final String PersonToProcessKey="PersonToProcessKey";
3.2将list添加进缓存
java
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根据是否刷新缓存选择从缓存获取还是重新添加缓存
java
/**
* 获取用户工序车间所有列表
* @param isRefresh
* @return
*/
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层
java
/**
* 获取用户工序车间所有列表
* @param isRefresh
* @return
*/
@GetMapping("/get_cache_all/{workshopId}/{isRefresh}")
public Result getWorkshopPersonToProcess(@PathVariable("isRefresh")boolean isRefresh){
return Result.success(basicWorkshopPersonMService.getWorkshopPersonToProcess(isRefresh));
}