JetCache 缓存使用

3,701 阅读2分钟

1. JetCache 介绍

JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 当前有四个实现,RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。

详细的学习可以直接到Aibaba发布的官方文档进行学习深入-- github.com/alibaba/jet…

2. JetCache 的基本使用

  1. 添加依赖
         <dependency>
            <groupId>com.alicp.jetcache</groupId>
            <artifactId>jetcache-starter-redis</artifactId>
            <version>2.5.3</version>
         </dependency>
         <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
         </dependency>
  1. 配置JetCache 的实现 RedisCache 之一(在 项目的配置文件中进行配置自己使用的缓存实现) 在自己的项目中的配置文件中进行配置Redis 连接
jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  local:
    default:
      type: linkedhashmap
      keyConvertor: fastjson
  remote:
    default:
      type: redis
      keyConvertor: fastjson
      valueEncoder: java
      valueDecoder: java
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: 127.0.0.1
      port: 6379
  1. 在boot 项目工程中进行缓存开启

在自己项目中的启动类上添加两个注解,就可以开启JetCache 缓存机制

@EnableMethodCache(basePackages = "自己项目的包扫描,根据自己的业务需求进行定义,也可以是自己项目的根包")
@EnableCreateCacheAnnotation
  1. 在自己的业务代码中通过注解进行使用缓存

在spring环境下,使用@Cached注解可以为一个方法添加缓存,@CacheUpdate用于更新缓存,@CacheInvalidate用于移除缓存元素。注解可以加在接口上也可以加在类上,加注解的类必须是一个spring bean

public interface UserService {
    @Cached(name="userCache.", key="args[0]", expire = 3600)
    User getUserById(long userId);

    @CacheUpdate(name="userCache.", key="args[0]", value="#user")
    void updateUser(User user);

    @CacheInvalidate(name="userCache.", key="args[0]")
    void deleteUser(long userId);
}

@Cached中属性的基本介绍: name : 指定缓存的唯一名称,不是必须的,如果没有指定,会使用类名+方法名。name会被用于远程缓存的key前缀。另外在统计中,一个简短有意义的名字会提高可读性。 key: 使用SpEL指定key,如果没有指定会根据所有参数自动生成。通俗的讲就是方法的入参 expire: 缓存过期时间 使用@Cached 注解缓存要注意一个事项: @CacheUpdate和@CacheInvalidate的name和area属性必须和@Cached相同,name属性还会用做cache的key前缀。