JEPaaS 社区

 找回密码
 立即注册
JECloud低代码平台-官网
查看: 2420|回复: 0

【后端系列】JEPaaS实现自定义缓存(增加、获取、删除、清空)

[复制链接]

10

主题

11

帖子

132

积分

凯特员工

积分
132
发表于 2022-4-11 17:33:07 | 显示全部楼层 |阅读模式
本帖最后由 凯特-姚帅龙 于 2022-4-21 17:03 编辑

JEPaaS低代码平台使用缓存服务实现项目自定义一二级缓存
一、实现效果

将指定的数据放入指定的缓存中
二、实现思路
调用缓存工具类,实现增加、获取、删除、清空的方法。
三、具体操作
文字描述,可以配图。
1.配置ehcache.xml文件
  1. <!-- 自定义缓存 -->
  2.         <cache name="xmApiCache"
  3.                    maxElementsInMemory="10000"
  4.                    maxElementsOnDisk="1000000"
  5.                    eternal="true"
  6.                    overflowToDisk="false"
  7.                    diskSpoolBufferSizeMB="10"
  8.                    timeToIdleSeconds="0"
  9.                    timeToLiveSeconds="0"
  10.                    diskPersistent="false"
  11.                    memoryStoreEvictionPolicy="LFU"
  12.                    useCluster="true"
  13.                    clusterPut="true"
  14.                    useOneLevelCache="true"
  15.                    clusterRemove="true"
  16.                    clusterRemoveAll="true"
  17.                    useTwoLevelCache="true"
  18.                    twoLevelCacheType="redis"
  19.                    commonRedisCache="false"
  20.                    commonRedisTimeOut="604800">
  21.                 <BootstrapCacheLoaderFactory class="net.sf.ehcache.store.SecondLevelStoreBootstrapCacheLoaderFactory"
  22.                                                                          properties="bootstrapAsynchronously=false"/>
  23.         </cache>
复制代码
1.png
2.创建相应的缓存工具类,调用EhcacheManager类的方法
  1. package com.api.cache.cache;

  2. import com.api.cache.vo.XmApiVo;
  3. import com.je.cache.service.EhcacheManager;
  4. import com.je.core.util.bean.DynaBean;

  5. /**
  6. * 业务文件缓存
  7. */
  8. public class XmApiCache {
  9.     /**
  10.      * 获取缓存值
  11.      * @param key 缓存键
  12.      * @return
  13.      */
  14.     public static XmApiVo getCacheValue(String key){
  15.         String cacheName="xmApiCache";
  16.         return (XmApiVo) EhcacheManager.getCacheValue(cacheName, key);

  17.     }
  18.     /**
  19.      * 添加缓存
  20.      * @param code 缓存code
  21.      * @param value 缓存值
  22.      */
  23.     public static void putCache(String code, XmApiVo value){
  24.         String cacheName="xmApiCache";
  25.         EhcacheManager.putCache(cacheName, code, value);
  26.     }
  27.     /**
  28.      * 清空所有缓存
  29.      */
  30.     public static void clearAllCache(){
  31.         String cacheName="xmApiCache";
  32.         EhcacheManager.clearAllCache(cacheName);
  33.     }

  34.     /**
  35.      * 清空指定的缓存
  36.      * @param code 缓存code
  37.      */
  38.     public static void removeCache(String code){
  39.         String cacheName="xmApiCache";
  40.         EhcacheManager.removeCache(cacheName, code);
  41.     }
  42. }
复制代码

2.png
3.调用工具类
  1. package com.api.cache.service;

  2. import com.api.cache.cache.XmApiCache;
  3. import com.api.cache.vo.XmApiVo;
  4. import com.je.core.service.PCDynaServiceTemplate;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Component;

  7. @Component("xmApiService")
  8. public class XmApiServiceImpl implements XmApiService {
  9.     @Autowired
  10.     private PCDynaServiceTemplate serviceTemplate;
  11.     @Override
  12.     public XmApiVo getXmApiCache(String xmId, String refresh) {
  13.         XmApiVo xmApiVo= XmApiCache.getCacheValue(xmId);
  14.         if("1".equals(refresh)){
  15.             xmApiVo=null;
  16.         }
  17.         if(xmApiVo==null){
  18.             //查询项目设定表为VO赋值
  19. //            DynaBean xm=serviceTemplate.selectOneByPk("项目表",xmId);
  20.             xmApiVo=new XmApiVo();
  21.             xmApiVo.setSendNoteFlag("1");
  22.             xmApiVo.setXmJcFlag("1");
  23.             xmApiVo.setXmYqDay(10);
  24.             XmApiCache.putCache(xmId,xmApiVo);
  25.         }
  26.         return xmApiVo;
  27.     }
  28. }
复制代码


3.png
四、相关代码(可选)
相关VO的代码
  1. package com.api.cache.vo;

  2. import java.io.Serializable;

  3. public class XmApiVo implements Serializable {

  4.     private static final long serialVersionUID = 6202670446773213532L;
  5.     /**
  6.      * 项目延期天数
  7.      */
  8.     private int xmYqDay=0;
  9.     /**
  10.      * 项目检查标识
  11.      */
  12.     private String xmJcFlag="0";
  13.     /**
  14.      * 是否发送短信提醒
  15.      */
  16.     private String sendNoteFlag="0";

  17.     public int getXmYqDay() {
  18.         return xmYqDay;
  19.     }

  20.     public void setXmYqDay(int xmYqDay) {
  21.         this.xmYqDay = xmYqDay;
  22.     }

  23.     public String getXmJcFlag() {
  24.         return xmJcFlag;
  25.     }

  26.     public void setXmJcFlag(String xmJcFlag) {
  27.         this.xmJcFlag = xmJcFlag;
  28.     }

  29.     public String getSendNoteFlag() {
  30.         return sendNoteFlag;
  31.     }

  32.     public void setSendNoteFlag(String sendNoteFlag) {
  33.         this.sendNoteFlag = sendNoteFlag;
  34.     }
  35. }
复制代码

六、关键字


自定义缓存、增加缓存、获取缓存、删除缓存、清空缓存。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|JEPaaS 低代码平台社区 ( 京ICP备18023569号 )

GMT+8, 2024-5-9 05:18 , Processed in 0.061585 second(s), 23 queries .

Powered by 北京凯特伟业科技有限公司

Copyright © 2001-2021, JEPaaS.COM

快速回复 返回顶部 返回列表