来源:juejin.cn/post/7244734132323221563
👉 欢迎加入小哈的星球,你将获得: 专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍; 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/; 截止目前,累计输出 71w+ 字,讲解图 3088+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有2400+小伙伴加入
一.JetCache的基本概念 二.JetCache 的 API 和使用: 三、SpringBoot整合JetCache
一.JetCache的基本概念
1.JetCache是由阿里巴巴 Group 开源的一款基于 Spring 和 Redis 的分布式缓存框架。它的主要特点包括:
基于注解: 通过注解的方式来实现缓存的配置和使用,代码简洁,易于维护。 多级缓存: 支持多级缓存,可以将数据缓存在本地内存、Redis、Tair、Memcached 等多种缓存存储中,提高缓存的命中率和查询效率。 多种缓存协议: 支持 Redis、Tair、Memcached 等多种缓存协议,具有良好的可扩展性和兼容性,可以灵活切换缓存存储方式。 高性能: JetCache 针对分布式环境下的高并发访问优化了缓存的数据结构和查询算法,提供了较高的性能。 易用性: JetCache 的 API 简单易用,支持 Spring 注入和自定义配置,提供了丰富的缓存操作功能,非常适合中小型应用开发。
2.JetCache 可以应用于各种场景,主要包括:
热点数据缓存: JetCache 可以将常用的热点数据缓存在本地或远程缓存中,减少数据库或其他数据源的访问,并提高响应性能和性能稳定性。 多级缓存融合: JetCache 支持多种缓存存储类型,可以将不同的缓存存储类型融合使用,以达到更高的缓存效率和命中率。 高并发读写: JetCache 的缓存算法可以优化高并发读写场景,提高程序性能并降低系统压力。 高速访问查询: JetCache 使用缓存,可以实现高速查询和访问,减少等待时间,并提高用户体验。
二.JetCache 的 API 和使用:
缓存管理: JetCache 提供了 CacheBuilder 类来创建缓存,以及 Cache 对象来操作缓存,例如 get、put、remove 等。在调用 Cache 对象的 put 方法时,可以使用注解 @Cache 来设置缓存时间和名称等配置。 注解支持: JetCache 提供了多种注解来实现缓存操作,例如 @Cached,@CacheUpdate, @CacheInvalidate 等。使用注解的方式,可以更加方便地进行缓存操作,例如缓存预热、删除、更新等。 缓存类型: JetCache 支持多种缓存类型,例如本地 memory、Redis、Tair 和 Memcached 等缓存,可以根据业务需求来选择缓存类型。 Spring 集成支持: JetCache 提供了 Spring 集成支持,可以通过注解来注入和配置缓存,简化使用流程。
三、SpringBoot整合JetCache
1.导入依赖
<dependency>
<groupId>com.alicp.jetcache</groupId>
<artifactId>jetcache-starter-redis</artifactId>
<version>3.0.1</version>
</dependency>
2.配置yml
jetcache:
remote:
type: redis
# 修改远程缓存名称
default:
#redis地址
servers: 127.0.0.1:6379
#redis中的db索引,默认为0
database: 0
#redis的密码,如果没有密码则不需要配置
password:
#连接redis的超时时间(单位:毫秒)
connectTimeout: 5000
#操作redis的超时时间(单位:毫秒)
timeout: 5000
#redis连接池最大连接数
maxTotal: 100
# 如果你使用了redis集群
cluster:
servers: "127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381"
#redis集群的密码,如果没有密码则不需要配置
password:
#jedisCluster连接池最大连接数
maxTotal: 100
local:
# 本地缓存元素最大数量
default:
limit: 10000
# 如果你想重写某个缓存的配置
myCache:
limit: 100
@Cached注解和@CreateCache的属性非常类似,但是多几个:
3.启动类注解
@EnableMethodCache(basePackages = "")
4.示例代码
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Cache(name = "userCache", key = "#userId", expire = 300)
@Override
public User getUserById(Long userId) {
return userRepository.getUserById(userId);
}
@CacheUpdate(name = "userCache", key = "#user.id")
@Override
public void updateUser(User user) {
userRepository.update(user);
}
@CacheInvalidate(name = "userCache", key = "#userId")
@Override
public void deleteUser(Long userId) {
userRepository.deleteUser(userId);
}
}
这和SpringCache很像,不过@Cached注解原生支持了TTL(超时时间),cacheType有LOCAL/REMOTE/BOTH三种选择, 分别代表本地内存/远程Cache Server(例如Redis)/两级缓存,可根据情况选用,合理的使用LOCAL或BOTH类型可以降低Cache Server的压力以及我们提供的服务的响应时间。
👉 欢迎加入小哈的星球,你将获得: 专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍; 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/; 截止目前,累计输出 71w+ 字,讲解图 3088+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有2400+小伙伴加入
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。
PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。
点“在看”支持小哈呀,谢谢啦