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));
    }
相关推荐
二月夜2 小时前
剖析Java正则表达式回溯问题
java·正则表达式
xuhaoyu_cpp_java2 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
程序员二叉3 小时前
【Java】集合面试全套精讲|HashMap/ArrayList高频考点完整版
java·面试·哈希算法
cfm_29143 小时前
JVM GC垃圾回收初步了解
java·开发语言·jvm
心之伊始3 小时前
LangChain4j RAG 实战:Java 后端如何把本地文档接入 Embedding 检索链路
java·架构·源码分析·csdn
许彰午4 小时前
17_synchronized关键字深度解析
java·开发语言
闪电悠米4 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
qqxhb5 小时前
47|成本与性能:缓存、批处理、模型路由与降级
缓存·批处理·智能模型路由·多级降级预案·成本预算
Xzh04235 小时前
AI Agent 学习路线(Java 后端方向)
java·人工智能·学习
艾利克斯冰6 小时前
Java 设计模式-行为型模式(更新中)
java·开发语言·设计模式