阿里开源的 JetCache-Alibaba 缓存框架,来了解一下?

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

ca2b6d1820bc2bb456fb9ee4e39a8081.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/post/
7244734132323221563

d092b98dbcb38e2f740b8498c70955df.jpeg


一.JetCache的基本概念

1.JetCache是由阿里巴巴 Group 开源的一款基于 Spring 和 Redis 的分布式缓存框架。它的主要特点包括:

  • 基于注解: 通过注解的方式来实现缓存的配置和使用,代码简洁,易于维护。

  • 多级缓存: 支持多级缓存,可以将数据缓存在本地内存、Redis、Tair、Memcached 等多种缓存存储中,提高缓存的命中率和查询效率。

  • 多种缓存协议: 支持 Redis、Tair、Memcached 等多种缓存协议,具有良好的可扩展性和兼容性,可以灵活切换缓存存储方式。

  • 高性能: JetCache 针对分布式环境下的高并发访问优化了缓存的数据结构和查询算法,提供了较高的性能。

  • 易用性: JetCache 的 API 简单易用,支持 Spring 注入和自定义配置,提供了丰富的缓存操作功能,非常适合中小型应用开发。

2.JetCache 可以应用于各种场景,主要包括:

  • 热点数据缓存: JetCache 可以将常用的热点数据缓存在本地或远程缓存中,减少数据库或其他数据源的访问,并提高响应性能和性能稳定性。

  • 多级缓存融合: JetCache 支持多种缓存存储类型,可以将不同的缓存存储类型融合使用,以达到更高的缓存效率和命中率。

  • 高并发读写: JetCache 的缓存算法可以优化高并发读写场景,提高程序性能并降低系统压力。

  • 高速访问查询: JetCache 使用缓存,可以实现高速查询和访问,减少等待时间,并提高用户体验。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

二.JetCache 的 API 和使用:

  • 缓存管理: JetCache 提供了 CacheBuilder 类来创建缓存,以及 Cache 对象来操作缓存,例如 get、put、remove 等。在调用 Cache 对象的 put 方法时,可以使用注解 @Cache 来设置缓存时间和名称等配置。

  • 注解支持: JetCache 提供了多种注解来实现缓存操作,例如 @Cached,@CacheUpdate, @CacheInvalidate 等。使用注解的方式,可以更加方便地进行缓存操作,例如缓存预热、删除、更新等。

  • 缓存类型: JetCache 支持多种缓存类型,例如本地 memory、Redis、Tair 和 Memcached 等缓存,可以根据业务需求来选择缓存类型。

  • Spring 集成支持: JetCache 提供了 Spring 集成支持,可以通过注解来注入和配置缓存,简化使用流程。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

三、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的属性非常类似,但是多几个:

7ccfceedaf847d0281089b98fb7c2ac3.png

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的压力以及我们提供的服务的响应时间。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

5b6c534273cb1424c048e81e9d984d93.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

abed3d14fdec2be31c0a9a1748c09f7d.png

846c1b39b792bdf63f0ad6f77e07438e.png2673a6daae5e8c71da171d2784f7b90a.png4a4093ad58e24d67ab189718b51caef8.pngdf6a111dc8c1414779b0f4ec9ddb8f54.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值