# j2cache-demo
**Repository Path**: luoex/j2cache-demo
## Basic Information
- **Project Name**: j2cache-demo
- **Description**: J2Cache集成示例(附加自定义Spring Starter实现)
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 17
- **Forks**: 10
- **Created**: 2022-04-05
- **Last Updated**: 2025-06-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 一、J2Cache Core示例
### 1. L1 Caffeine示例
核心代码:[j2cache-core-demo/../l1/caffeine/L1CaffeineSample.java](j2cache-core-demo/src/main/java/com/luo/demo/j2cache/l1/caffeine/L1CaffeineSample.java)
配置文件:[j2cache-core-demo/../resources/j2cache-l1-caffeine.properties](j2cache-core-demo/src/main/resources/j2cache-l1-caffeine.properties)
### 2. L1 Caffeine + JGroups示例
核心代码:[j2cache-core-demo/../l1/jgroups/L1CaffeineJGroupsSample.java | L1CaffeineJGroupsSample2.java](j2cache-core-demo/src/main/java/com/luo/demo/j2cache/l1/jgroups)
配置文件:
[j2cache-core-demo/../resources/j2cache-l1-caffeine-jgroups.properties](j2cache-core-demo/src/main/resources/j2cache-l1-caffeine-jgroups.properties)
[j2cache-core-demo/../resources/network.xml](j2cache-core-demo/src/main/resources/network.xml)
### 3. L1 Caffeine, L2 Redis(Jedis)示例
核心代码:[j2cache-core-demo/../l2/redis/L1CaffeineL2RedisSample.java | L1CaffeineL2RedisSample2.java](j2cache-core-demo/src/main/java/com/luo/demo/j2cache/l2/redis)
配置文件:[j2cache-core-demo/../resources/j2cache-l1-caffeine-l2-redis.properties](j2cache-core-demo/src/main/resources/j2cache-l1-caffeine-l2-redis.properties)
### 4. L1 Caffeine, L2 Redis(Lettuce)示例
核心代码:[j2cache-core-demo/../l2/redis/L1CaffeineL2LettuceSample.java | L1CaffeineL2LettuceSample2.java](j2cache-core-demo/src/main/java/com/luo/demo/j2cache/l2/lettuce)
配置文件:[j2cache-core-demo/../resources/j2cache-l1-caffeine-l2-lettuce.properties](j2cache-core-demo/src/main/resources/j2cache-l1-caffeine-l2-lettuce.properties)
## 二、J2Cache SpringBoot + Spring Cache集成示例
>**注:** 具体执行可参见测试用例:[j2cache-spring-cache-demo/../test../J2cacheDemoApplicationTests.java](j2cache-spring-cache-demo/src/test/java/com/luo/demo/j2cache/J2cacheDemoApplicationTests.java)
### 1. Jedis集成
核心代码:[j2cache-spring-cache-demo](j2cache-spring-cache-demo)
配置文件:
[j2cache-spring-cache-demo/../resources/application-jedis.yml](j2cache-spring-cache-demo/src/main/resources/application-jedis.yml)
[j2cache-spring-cache-demo/../resources/j2cache-redis.properties](j2cache-spring-cache-demo/src/main/resources/j2cache-redis.properties)
### 2. Lettuce集成
核心代码:[j2cache-spring-cache-demo](j2cache-spring-cache-demo)
配置文件:
[j2cache-spring-cache-demo/../resources/application-lettuce.yml](j2cache-spring-cache-demo/src/main/resources/application-lettuce.yml)
[j2cache-spring-cache-demo/../resources/j2cache-redis.properties](j2cache-spring-cache-demo/src/main/resources/j2cache-redis.properties)
## 三、自定义J2Cache SpringBoot Starter(使用Spring Data Redis配置)
>由于直接使用社区提供的j2cache-spring-boot2-starter是将j2cache.properties的配置转换为Spring Data Redis配置,
>即读取j2cache.properties中的redis属性再转换为Spring Data Redis相关对象(JedisConnectionFactory, LettuceConnectionFactory),
>本示例将该starter进行重构,重构后的starter`直接使用Spring Data Redis相关配置及对象`,无需再通过单独的j2cache.properties进行配置及构造,
>同时对J2Cache的配置进行了提取与封装,可以基于SpringBoot生态`application.yml`等直接进行配置,
>并复用了原starter关于`RedisSerializer、MessageListener、SpringRedisProvider、J2CacheCacheManager`等实现。

### 1. j2cache-native-spring-boot-starter
核心代码:[j2cache-spring-cache-native-demo/j2cache-native-spring-boot-starter](j2cache-spring-cache-native-demo/j2cache-native-spring-boot-starter)
配置文件格式:
```yaml
spring:
# Spring Data Redis配置
redis:
client-type: lettuce
host: 127.0.0.1
port: 6379
password:
database: 0
# lettuce连接池配置
lettuce:
pool:
enabled: true
max-active: 8
max-idle: 8
min-idle: 5
time-between-eviction-runs: 30s
max-wait: 5s
shutdown-timeout: 100ms
# J2Cache配置
j2cache:
# 开启J2Cache支持Spring Cache
open-spring-cache: true
# 缓存清除模式(active | passive | blend)
cache-clean-mode: passive
# 缓存变更广播方式(jgroups | redis | lettuce | rabbitmq | rocketmq | none | 自定义class)
# 保持默认SpringBoot Redis自定义实现SpringRedisPubSubPolicy
broadcast: com.luo.j2cache.sb.cache.support.redis.SpringRedisPubSubPolicy
# 缓存null对象
default-cache-null-object: true
# L1缓存配置
l1:
# L1 缓存provider名称(caffeine | ehcache | ehcache3)
provider-class: caffeine
# Caffeine配置
caffeine:
region:
default: 100,10m
myRegion: 10,5m
# L2缓存配置
l2:
# L2 缓存provider名称(redis | lettuce | readonly-redis | memcached)
# 保持默认SpringBoot Redis自定义实现SpringRedisProvider
provider-class: com.luo.j2cache.sb.cache.support.redis.SpringRedisProvider
# 二级缓存序列化格式(fst(推荐) | kryo | json | fastjson | java(默认) | fse | 自定义classname)
serialization: fastjson
redis:
# 是否启用同步一级缓存的Time-To-Live超时时间到Redis TTL(true启用,false不启用则永不超时)
sync-ttl-to-redis: true
# Redis发布订阅(Pub/Sub)对应的channel名称
channel: j2cache
# Key命名空间(前缀),默认为空
namespace: myName
# 兼容原J2Cache属性配置(即原来需要放到j2cache.properties中的属性皆可直接在此配置)
# 默认使用redis则无需此配置
# properties:
# caffeine.region.myRegion: 100,5m
# redis.mode: single
```
### 2. j2cache-native-spring-boot-starter集成示例
核心代码:[j2cache-spring-cache-native-demo/j2cache-native-spring-boot-demo](j2cache-spring-cache-native-demo/j2cache-native-spring-boot-demo)
配置文件:[j2cache-spring-cache-native-demo/j2cache-native-spring-boot-demo/../resources/application.yml](j2cache-spring-cache-native-demo/j2cache-native-spring-boot-demo/src/main/resources/application.yml)