JAVA使用redis添加和获取list集合缓存

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));
    }
相关推荐
她的男孩5 小时前
数据库改了配置,说好的 30 秒自动刷新根本没跑:那条 @Scheduled 是注释状态
java·后端·架构
君顾15 小时前
西安24小时自助健身房系统软件开发实战:需求分析与技术落地指南
java·开发语言·健身房
starzy19906 小时前
Flink Session Window 详解及代码实现:从用户会话切割到窗口合并机制
java·flink
gb42152876 小时前
FastExcel和EasyExcel的区别
java
我不会起名字3226 小时前
一天一道力扣Hot100(37):深度优先算法--括号生成
java·数据结构·c++·后端·python·算法·go
大圣编蚕6 小时前
Java 运算符详解:赋值类运算符
java
君顾16 小时前
24小时自助健身房系统开发实战:从0到1完整技术架构指南
java·开发语言·健身房
白远山6 小时前
城市电竞陪玩调度系统实战:从派单算法到多端协同的架构拆解
java·架构·uni-app·需求分析
鹿角片ljp15 小时前
LeetCode 64:最小路径和复盘|二维 DP 与 ACM 模式完整写法
java·数据结构·算法