找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2021

积分

0

好友

291

主题
发表于 3 天前 | 查看: 7| 回复: 0

JetCache框架图标

一、JetCache的基本概念

JetCache 是阿里巴巴开源的一款基于 Spring 的缓存框架,支持包括 Redis 在内的多种存储后端。它的核心设计目标是简化缓存的使用,同时提供高性能与灵活的配置。

主要特点

  • 基于注解:通过 @Cached@CacheUpdate 等注解声明式地配置和使用缓存,极大简化了代码,提升了可维护性。
  • 多级缓存:支持将数据同时缓存在本地内存(如 Caffeine)和远程缓存(如 Redis、Tair、Memcached)中,形成多级缓存架构,有效提高缓存命中率和查询效率。
  • 多存储支持:适配多种缓存协议,具有良好的可扩展性,允许开发者根据业务场景灵活选择或切换缓存存储方式。
  • 高性能优化:针对分布式环境下的高并发访问场景,对缓存数据结构和查询算法进行了优化。
  • 易于集成:提供了与 Spring 及 Spring Boot 深度集成的支持,通过简单的配置即可投入使用。

适用场景

  • 热点数据缓存:将频繁访问的数据缓存在靠近应用层的位置,显著降低数据库压力,提升响应速度与系统稳定性。
  • 多级缓存融合:利用本地缓存的高速度和远程缓存的大容量、可共享特性,构建高效的混合缓存模式。
  • 高并发读写:其缓存机制能够有效应对高并发场景,减轻系统负载,平滑流量峰值。
  • 高速查询加速:对于复杂或耗时的查询操作,通过缓存结果实现毫秒级响应,优化用户体验。

二、JetCache 的核心 API 与功能

  • 缓存管理:通过 CacheBuilder 创建缓存实例,使用 Cache 接口提供的 getputremove 等方法进行基础操作。结合 @Cache 注解,可以方便地设置缓存的过期时间、名称等属性。
  • 丰富的注解支持
    • @Cached:用于方法返回值缓存。
    • @CacheUpdate:更新缓存中的值。
    • @CacheInvalidate:删除缓存项。
      使用注解能直观地实现缓存预热、更新和清理等操作。
  • 灵活的缓存类型:支持 LOCAL(本地内存)、REMOTE(如 Redis)、BOTH(两级缓存)等多种类型,可根据业务的数据一致性要求、访问模式进行选择。
  • 深度 Spring 集成:完美融入 Spring 生态,支持通过 @Autowired 注入缓存实例,并通过配置类或配置文件进行集中化管理。

三、Spring Boot 整合 JetCache 实战

下面通过一个完整的示例,演示如何在 Spring Boot 项目中集成和使用 JetCache。

1. 添加依赖

在项目的 pom.xml 文件中引入 jetcache-starter-redis 依赖。

<dependency>
    <groupId>com.alicp.jetcache</groupId>
    <artifactId>jetcache-starter-redis</artifactId>
    <version>3.0.1</version>
</dependency>

2. 配置文件 (application.yml)

在配置文件中定义 JetCache 的相关属性,包括远程缓存(Redis)和本地缓存的设置。

jetcache:
  remote:
    # 使用 Redis 作为远程缓存
    type: redis
    # 默认远程缓存配置
    default:
      # Redis 服务器地址
      servers: 127.0.0.1:6379
      # Redis 数据库索引
      database: 0
      # Redis 密码,若无则留空
      password:
      # 连接超时时间(毫秒)
      connectTimeout: 5000
      # 操作超时时间(毫秒)
      timeout: 5000
      # 连接池最大连接数
      maxTotal: 100
    # Redis 集群配置示例(若使用集群)
    cluster:
      servers: "127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381"
      password:
      maxTotal: 100
  local:
    # 默认本地缓存配置
    default:
      # 本地缓存最大容量
      limit: 10000
    # 自定义缓存配置示例
    myCache:
      limit: 100

3. 理解 @Cached 注解

@Cached 注解是使用 JetCache 最常用的方式,其属性非常丰富,允许你精细控制缓存行为。

JetCache @Cached注解属性配置表

4. 启用缓存

在 Spring Boot 主启动类上添加 @EnableMethodCache 注解,并指定要扫描的包路径。

@SpringBootApplication
@EnableMethodCache(basePackages = "com.yourpackage.service")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

5. 业务层使用示例

下面是一个用户服务(UserService)的实现示例,展示了如何通过注解进行缓存的增、删、改、查。

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    // 查询用户并缓存,key为userId,过期时间300秒
    @Cached(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);
    }
}

关键点解析

  • @Cached 注解原生支持 TTL(过期时间),这是相比 Spring Cache 的一个便利之处。
  • cacheType 属性可以指定为 LOCALREMOTEBOTH。合理使用 LOCALBOTH 可以极大降低远程 Cache Server 的压力,并减少网络延迟,从而提升服务的响应速度。例如,对于极热的数据,可以采用 BOTH 类型,在本地内存保留一份副本。

通过以上步骤,你就可以在 Spring Boot 项目中轻松引入 JetCache,享受声明式缓存编程带来的便利与高效。如果你对更多开源实战技巧感兴趣,欢迎持续关注云栈社区,获取更多深度技术解析。




上一篇:Mac Studio集群实战:借助Thunderbolt 5 RDMA实现1.5TB统一内存,加速AI推理
下一篇:使用Three.js实现动态季节与天气变换的3D露营场景(含源码与在线体验)
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-9 18:04 , Processed in 0.195857 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表