j2cache是开源的二级缓存库,支持实现:本地缓存Ehcache、Caffeine、远程缓存Redis、Memcached。常见解决方案 如一级缓存使用Ehcache、二级缓存使用Redis。
上篇描述的阿里开源的jetcache,是支持二级缓存,只是相比j2cache不够灵活,还不够完善,前者是缓存统一操作规范,而j2cache是专注二级缓存库。
本文一级缓存:Caffeine、二级缓存:Redis。
pom.xml 依赖
<dependency>
<groupId>net.oschina.j2cache</groupId>
<artifactId>j2cache-core</artifactId>
<version>2.8.4-release</version>
</dependency>
<dependency>
<groupId>net.oschina.j2cache</groupId>
<artifactId>j2cache-spring-boot2-starter</artifactId>
<version>2.8.0-release</version>
</dependency>
application.yml 配置
# 设置j2cache配置文件
j2cache:
config-location: j2cache.properties
j2cache.properties
# 一级缓存
j2cache.L1.provider_class=caffeine
# 二级缓存
j2cache.l2-cache-open=true
j2cache.L2.provider_class=net.oschina.j2cache.cache.support.redis.SpringRedisProvider
j2cache.L2.config_section=redis
redis.hosts=192.168.126.181:6379
redis.timeout=2000
redis.password=123456
# 指定模式,可以消除一行警告信息
redis.mode=single
# 指定命名空间,可以作为key的公共前缀
redis.namespace=j2cache
# 一级缓存中的数据如何到达二级缓存
j2cache.broadcast=net.oschina.j2cache.cache.support.redis.SpringRedisPubSubPolicy
业务代码
import lombok.AllArgsConstructor;
import lombok.Data;
import net.oschina.j2cache.CacheChannel;
import net.oschina.j2cache.CacheObject;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class UserService {
@Data
@AllArgsConstructor
public static class User {
private String name;
private Integer age;
}
// 模拟数据库
List<User> userList = new ArrayList<>();
private CacheChannel cacheChannel;
public void add (User user) {
// 插入数据库
userList.add(user);
// 设置缓存
cacheChannel.set("user", user.getName(), user);
}
public void query(String name){
CacheObject user = cacheChannel.get("user", name);
}
}