ehcache
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,3 +5,4 @@ target
|
|||||||
**/*.log
|
**/*.log
|
||||||
dist
|
dist
|
||||||
logs
|
logs
|
||||||
|
cache
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -21,7 +21,7 @@
|
|||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<gaea.version>1.0.0-SNAPSHOT</gaea.version>
|
<gaea.version>2.0.0-SNAPSHOT</gaea.version>
|
||||||
<gaea.security.version>1.0.0-SNAPSHOT</gaea.security.version>
|
<gaea.security.version>1.0.0-SNAPSHOT</gaea.security.version>
|
||||||
<gaea.export.version>1.0.0-SNAPSHOT</gaea.export.version>
|
<gaea.export.version>1.0.0-SNAPSHOT</gaea.export.version>
|
||||||
<gaea.generator.version>1.0.0-SNAPSHOT</gaea.generator.version>
|
<gaea.generator.version>1.0.0-SNAPSHOT</gaea.generator.version>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.anjiplus.template.gaea</groupId>
|
<groupId>com.anjiplus.template.gaea</groupId>
|
||||||
<artifactId>template-gaea-common</artifactId>
|
<artifactId>template-gaea-common</artifactId>
|
||||||
<!-- <exclusions>-->
|
<exclusions>
|
||||||
<!-- <exclusion>-->
|
<!-- <exclusion>-->
|
||||||
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
||||||
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
|
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
|
||||||
@@ -25,7 +25,11 @@
|
|||||||
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
||||||
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
|
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
|
||||||
<!-- </exclusion>-->
|
<!-- </exclusion>-->
|
||||||
<!-- </exclusions>-->
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -49,6 +53,17 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-cache</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.sf.ehcache</groupId>
|
||||||
|
<artifactId>ehcache</artifactId>
|
||||||
|
<version>2.10.6</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
<!-- <groupId>com.alibaba.cloud</groupId>-->
|
||||||
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
|
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
|
||||||
|
|||||||
141
report-core/src/main/java/com/anjiplus/template/gaea/business/cache/ReportCacheHelper.java
vendored
Normal file
141
report-core/src/main/java/com/anjiplus/template/gaea/business/cache/ReportCacheHelper.java
vendored
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.cache;
|
||||||
|
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.cache.CacheHelper;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.cache.Cache;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.ApplicationContextAware;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class ReportCacheHelper implements CacheHelper, ApplicationContextAware {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private Cache cache;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String stringGet(String key) {
|
||||||
|
Cache.ValueWrapper valueWrapper = cache.get(key);
|
||||||
|
if (valueWrapper != null) {
|
||||||
|
return (String)valueWrapper.get();
|
||||||
|
}
|
||||||
|
return CacheHelper.super.stringGet(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean setIfAbsent(String key, String value) {
|
||||||
|
cache.putIfAbsent(key, value);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean exist(String key) {
|
||||||
|
return cache.get(key)!=null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stringSet(String key, String value) {
|
||||||
|
cache.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stringSetExpire(String key, String value, long time, TimeUnit timeUnit) {
|
||||||
|
CacheHelper.super.stringSetExpire(key, value, time, timeUnit);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String regKey(String key) {
|
||||||
|
return CacheHelper.super.regKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stringSetExpire(String key, String value, long seconds) {
|
||||||
|
CacheHelper.super.stringSetExpire(key, value, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, String> hashGet(String key) {
|
||||||
|
Cache.ValueWrapper t = cache.get(key);
|
||||||
|
if (t != null) {
|
||||||
|
return (Map<String, String>) t.get();
|
||||||
|
}
|
||||||
|
return Maps.newHashMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String hashGetString(String key, String hashKey) {
|
||||||
|
Map<String, String> stringStringMap = hashGet(key);
|
||||||
|
return stringStringMap.get(hashKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hashDel(String key, String hashKey) {
|
||||||
|
Map<String, String> stringStringMap = hashGet(key);
|
||||||
|
stringStringMap.remove(hashKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hashBatchDel(String key, Set<String> hashKeys) {
|
||||||
|
Map<String, String> stringStringMap = hashGet(key);
|
||||||
|
hashKeys.forEach(stringStringMap::remove);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hashExist(String key, String hashKey) {
|
||||||
|
if (exist(key)) {
|
||||||
|
Map<String, String> map = hashGet(key);
|
||||||
|
return map.containsKey(hashKey);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hashAnyExist(String key, String[] hashKeys) {
|
||||||
|
return CacheHelper.super.hashAnyExist(key, hashKeys);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hashSet(String key, String hashKey, String hashValue) {
|
||||||
|
Map<String, String> map;
|
||||||
|
if (exist(key)) {
|
||||||
|
map = hashGet(key);
|
||||||
|
} else {
|
||||||
|
map = new HashMap<>();
|
||||||
|
}
|
||||||
|
map.put(hashKey, hashValue);
|
||||||
|
hashSet(key, map);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hashSet(String key, Map<String, String> hash) {
|
||||||
|
cache.put(key, hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(String key) {
|
||||||
|
cache.evict(key);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean delete(List<String> keys) {
|
||||||
|
keys.forEach(this::delete);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||||
|
/*基于内存的本地缓存*/
|
||||||
|
cache = (Cache)applicationContext.getBean("ehCacheCache");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,11 @@
|
|||||||
package com.anjiplus.template.gaea.business.config;
|
package com.anjiplus.template.gaea.business.config;
|
||||||
|
|
||||||
|
import com.anji.plus.gaea.cache.CacheHelper;
|
||||||
|
import com.anjiplus.template.gaea.business.cache.ReportCacheHelper;
|
||||||
import com.anjiplus.template.gaea.business.runner.ApplicationInitRunner;
|
import com.anjiplus.template.gaea.business.runner.ApplicationInitRunner;
|
||||||
|
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
|
import org.springframework.cache.ehcache.EhCacheCache;
|
||||||
|
import org.springframework.cache.ehcache.EhCacheCacheManager;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
@@ -26,4 +29,23 @@ public class BusinessAutoConfiguration {
|
|||||||
public ApplicationInitRunner applicationInitRunner() {
|
public ApplicationInitRunner applicationInitRunner() {
|
||||||
return new ApplicationInitRunner();
|
return new ApplicationInitRunner();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean("gaeaCacheHelper")
|
||||||
|
public CacheHelper gaeaCacheHelper(){
|
||||||
|
return new ReportCacheHelper();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public EhCacheCache ehCacheCache() {
|
||||||
|
return (EhCacheCache) ehCacheCacheManager().getCache("reportCache");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建ehCacheCacheManager
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
public EhCacheCacheManager ehCacheCacheManager() {
|
||||||
|
|
||||||
|
return new EhCacheCacheManager();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,11 +19,13 @@ spring:
|
|||||||
url: jdbc:mysql://10.108.26.197:3306/aj_report?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
|
url: jdbc:mysql://10.108.26.197:3306/aj_report?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
|
||||||
username: root
|
username: root
|
||||||
password: appuser@anji
|
password: appuser@anji
|
||||||
redis:
|
# 禁用redis,使用ehcache
|
||||||
host: 10.108.26.197
|
# redis:
|
||||||
port: 6379
|
# host: 10.108.26.197
|
||||||
password: appuser@anji
|
# port: 6379
|
||||||
database: 1
|
# password: appuser@anji
|
||||||
|
# database: 1
|
||||||
|
|
||||||
flyway:
|
flyway:
|
||||||
baseline-on-migrate: true
|
baseline-on-migrate: true
|
||||||
#数据库连接配置
|
#数据库连接配置
|
||||||
|
|||||||
36
report-core/src/main/resources/ehcache.xml
Normal file
36
report-core/src/main/resources/ehcache.xml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<ehcache>
|
||||||
|
<!--
|
||||||
|
磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存
|
||||||
|
path:指定在硬盘上存储对象的路径
|
||||||
|
path可以配置的目录有:
|
||||||
|
user.home(用户的家目录)
|
||||||
|
user.dir(用户当前的工作目录)
|
||||||
|
java.io.tmpdir(默认的临时目录)
|
||||||
|
ehcache.disk.store.dir(ehcache的配置目录)
|
||||||
|
绝对路径(如:d:\\ehcache)
|
||||||
|
查看路径方法:String tmpDir = System.getProperty("java.io.tmpdir");
|
||||||
|
-->
|
||||||
|
<diskStore path="./cache" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理
|
||||||
|
maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象
|
||||||
|
eternal:代表对象是否永不过期 (指定true则下面两项配置需为0无限期)
|
||||||
|
timeToIdleSeconds:最大的发呆时间 /秒
|
||||||
|
timeToLiveSeconds:最大的存活时间 /秒
|
||||||
|
overflowToDisk:是否允许对象被写入到磁盘
|
||||||
|
说明:下列配置自缓存建立起600秒(10分钟)有效 。
|
||||||
|
在有效的600秒(10分钟)内,如果连续120秒(2分钟)未访问缓存,则缓存失效。
|
||||||
|
就算有访问,也只会存活600秒。
|
||||||
|
-->
|
||||||
|
<!--<defaultCache maxElementsInMemory="10000" eternal="false"
|
||||||
|
timeToIdleSeconds="600" timeToLiveSeconds="600" overflowToDisk="true" />
|
||||||
|
-->
|
||||||
|
<cache name="reportCache" maxElementsInMemory="10000" eternal="true"
|
||||||
|
maxElementsOnDisk="0" diskPersistent="true"
|
||||||
|
timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="true" />
|
||||||
|
|
||||||
|
<!--<cache name="persistentCacheCfg" maxElementsInMemory="1" eternal="true"
|
||||||
|
diskPersistent="true" maxElementsOnDisk="0"
|
||||||
|
timeToIdleSeconds="0" timeToLiveSeconds="0" overflowToDisk="true" />-->
|
||||||
|
</ehcache>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<property name="LOG_HOME" value="./logs"/>
|
<property name="LOG_HOME" value="./logs"/>
|
||||||
<property name="LOG_NAME" value="gaea-business"/>
|
<property name="LOG_NAME" value="ai-report"/>
|
||||||
|
|
||||||
<!--控制台-->
|
<!--控制台-->
|
||||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
@@ -34,4 +34,4 @@
|
|||||||
<appender-ref ref="LOGFILE" />
|
<appender-ref ref="LOGFILE" />
|
||||||
</root>
|
</root>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
Reference in New Issue
Block a user