配置j2cache配置文件
- caffeine.properties
示例:
default = 1000, 30m
iform.context = 10000, 10m
iform.sys = 10000, 1h
#
上面的配置定义了三个缓存 Region ,分别是:
默认缓存,大小是 1000 个对象,TTL 是 30 分钟
iform.context 缓存,大小是 10000 个对象,TTL 是 10 分钟
iform.sys 缓存,大小是 10000 个对象,TTL 是 1 个小时
default 是当我们调用如下方法时:
public void set(String region, String key, Object value)
如果我们传入的 region 参数(假设为:region1)没有在 caffeine.properties 中定义的话,那 J2Cache 会自动创建一个名为 region1 的缓存 Region,其配置和 default 的配置一致。
- j2cache.properties
示例:
# 缓存广播方法,支持 jgroups/redis/lettuce/rabbitmq/rocketmq
j2cache.broadcast = lettuce
# 第一二级缓存实现方式,一级支持 ehcache/caffeine, 二级支持 redis/lettuce/memcached
j2cache.L1.provider_class = caffeine
j2cache.L2.provider_class = lettuce
# 在redis缓存数据中启用/禁用ttl(如果禁用,redis中的对象将永远不会过期,默认值:true)
j2cache.sync_ttl_to_redis = true
# 默认情况下是否缓存空对象(默认为false)
j2cache.default_cache_null_object = true
# 缓存序列化方式,支持 fst/kryo/fastjson/java/json/fse
j2cache.serialization = kryo
# caffeine配置文件
caffeine.properties = /config/caffeine.properties
# 缓存名称空间可选,默认为[空]
# redis存储模式 支持 generic/hash
# 发布/订阅频道名称
lettuce.namespace =
lettuce.storage = generic
lettuce.channel = j2cache.platform
lettuce.channel = j2cache.platform 需要注意,不同的服务名称需要唯一
重写仓库、领域中cache相关方法
以DefaultPartyUser的仓库和领域类为例子
仓库
- getInternaakacheName()
public String getInternaakacheName() {
return CacheKeyConstants.Region.REGION_iform_PARTY; // 返回对应的region名称
}
- getInternalType()
public String getInternalType() {
return "DefaultPartyUser"; // 返回对应的类型名称,一般为类的名称即可
}
- getInternal(P p)
public void getInternal(DefaultPartyUserPo p) {
if(BeanUtils.isEmpty(p)) {
return;
}
// 跳过一级缓存
partyEmployeeRepository.setSkipInternal();
PartyEmployeePo employeePo = partyEmployeeRepository.get(p.getId());
// 恢复一级缓存
partyEmployeeRepository.removeSkipInternal();
if(BeanUtils.isEmpty(employeePo)) {
return;
}
p.setFullname(employeePo.getName());
p.setName(employeePo.getName());
p.setStatus(employeePo.getStatus());
p.setGender(employeePo.getGender());
p.setMobile(employeePo.getMobile());
p.setEmail(employeePo.getEmail());
p.setAddress(employeePo.getAddress());
p.setQq(employeePo.getQq());
p.setPhoto(employeePo.getPhoto());
p.setWcAccount(employeePo.getWcAccount());
}
领域
- getInternaakacheName()
public String getInternaakacheName() {
return CacheKeyConstants.Region.REGION_iform_PARTY; // 返回对应的region名称
}
- getInternalType()
public String getInternalType() {
return "DefaultPartyUser"; // 返回对应的类型名称,一般为类的名称即可
}
分区常量位置
- CacheKeyConstants
public class CacheKeyConstants {
public static final String OAUTH = "oauth";
public static final String LOCK_RETRY = "user.lock.retry";
public static final String CURRENT_USER = "current.user";
public static final String CURRENT_ORG = "current.org";
public static final String CURRENT_POSITION = "current.position";
public static final String CURRENT_IP = "current.ip";
public static final String CURRENT_ACCESS_TOKEN = "current.access.token";
public static final String CURRENT_TENANT_ID = "current.tenant.id";
public static final String CURRENT_TENANT_IDS = "current.tenant.ids";
public static final String CACHE_PREFIX = "constants:cache";
public static final String CACHE_KEY_PREFIX = "cache";
private CacheKeyConstants() {
}
public static class Properties {
public static final String PROPERTY_DEFAULT = "cache.default";
public static final String PROPERTY_iform_SYS = "cache.iform.sys";
public static final String PROPERTY_iform_RES = "cache.iform.res";
public static final String PROPERTY_iform_CLIENT = "cache.iform.client";
public static final String PROPERTY_iform_CATEGORY = "cache.iform.category";
public static final String PROPERTY_iform_DESKTOP = "cache.iform.desktop";
public static final String PROPERTY_iform_GROUP = "cache.iform.group";
public static final String PROPERTY_iform_ATTR = "cache.iform.attr";
public static final String PROPERTY_iform_LEVEL = "cache.iform.level";
public static final String PROPERTY_iform_PARTY = "cache.iform.party";
public static final String PROPERTY_iform_BO = "cache.iform.bo";
public static final String PROPERTY_iform_FORM = "cache.iform.form";
public static final String PROPERTY_iform_DATA_TPL = "cache.iform.data.tpl";
public static final String PROPERTY_iform_CODE = "cache.iform.code";
public static final String PROPERTY_iform_BPM_DEF = "cache.iform.bpm.def";
public static final String PROPERTY_iform_BPM_AUTH = "cache.iform.bpm.auth";
public static final String PROPERTY_iform_BPM_RUNNING = "cache.iform.bpm.running";
public static final String PROPERTY_iform_BPM_ACTIVITI = "cache.iform.bpm.activiti";
public static final String PROPERTY_iform_AUTHORIZE = "cache.iform.authorize";
public static final String PROPERTY_iform_TOKEN = "cache.iform.token";
public static final String PROPERTY_iform_REFRESH = "cache.iform.refresh";
public Properties() {
}
}
public static class Region {
public static final String REGION_DEFAULT = "default";
public static final String REGION_iform_CONTEXT = "iform.context";
public static final String REGION_iform_SYS = "iform.sys";
public static final String REGION_iform_RES = "iform.res";
public static final String REGION_iform_CLIENT = "iform.client";
public static final String REGION_iform_CATEGORY = "iform.category";
public static final String REGION_iform_DESKTOP = "iform.desktop";
public static final String REGION_iform_GROUP = "iform.group";
public static final String REGION_iform_ATTR = "iform.attr";
public static final String REGION_iform_LEVEL = "iform.level";
public static final String REGION_iform_PARTY = "iform.party";
public static final String REGION_iform_TENANT = "iform.tenant";
public static final String REGION_iform_BO = "iform.bo";
public static final String REGION_iform_FORM = "iform.form";
public static final String REGION_iform_FORM_PRINT = "iform.form.print";
public static final String REGION_iform_DATA_TPL = "iform.data.tpl";
public static final String REGION_iform_CODE = "iform.code";
public static final String REGION_iform_BPM_DEF = "iform.bpm.def";
public static final String REGION_iform_BPM_AUTH = "iform.bpm.auth";
public static final String REGION_iform_BPM_RUNNING = "iform.bpm.running";
public static final String REGION_iform_BPM_ACTIVITI = "iform.bpm.activiti";
public static final String REGION_iform_AUTHORIZE = "iform.authorize";
public static final String REGION_iform_TOKEN = "iform.token";
public static final String REGION_iform_REFRESH = "iform.refresh";
public Region() {
}
}
}
作者:黄春艳 创建时间:2025-01-23 14:03
最后编辑:黄春艳 更新时间:2025-02-14 10:41
最后编辑:黄春艳 更新时间:2025-02-14 10:41