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));
    }
相关推荐
不倒翁玩偶9 分钟前
IDEA导入新的SpringBoot项目没有启动按钮
java·spring boot·intellij-idea
猫头虎10 分钟前
基于信创openEuler系统安装部署OpenTeleDB开源数据库的实战教程
数据库·redis·sql·mysql·开源·nosql·database
静听山水17 分钟前
Redis核心数据结构-ZSet
数据结构·redis
小小小米粒24 分钟前
Maven Tools
java
Dontla30 分钟前
黑马大模型RAG与Agent智能体实战教程LangChain提示词——6、提示词工程(提示词优化、few-shot、金融文本信息抽取案例、金融文本匹配案例)
redis·金融·langchain
難釋懷32 分钟前
秒杀优化-基于阻塞队列实现秒杀优化
redis·缓存
kali-Myon38 分钟前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀42 分钟前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
清水白石0081 小时前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存
符哥20081 小时前
C++ 进阶知识点整理
java·开发语言·jvm