配置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