JetCache-Alibaba缓存框架

一.JetCache的基本概念

1.JetCache是由阿里巴巴 Group 开源的一款依据 Spring 和 Redis 的分布式缓存结构。它的主要特点包括:

  1. 依据注解:经过注解的办法来实现缓存的装备和运用,代码简练,易于保护。
  2. 多级缓存:支撑多级缓存,能够将数据缓存在本地内存、Redis、Tair、Memcached 等多种缓存存储中,进步缓存的命中率和查询功率。
  3. 多种缓存协议:支撑 Redis、Tair、Memcached 等多种缓存协议,具有杰出的可扩展性和兼容性,能够灵敏切换缓存存储办法。
  4. 高功用:JetCache 针对分布式环境下的高并发拜访优化了缓存的数据结构和查询算法,供给了较高的功用。
  5. 易用性:JetCache 的 API 简单易用,支撑 Spring 注入和自定义装备,供给了丰富的缓存操作功用,十分合适中小型应用开发。

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

  1. 热点数据缓存:JetCache 能够将常用的热点数据缓存在本地或长途缓存中,削减数据库或其他数据源的拜访,并进步响应功用和功用稳定性。
  2. 多级缓存交融:JetCache 支撑多种缓存存储类型,能够将不同的缓存存储类型交融运用,以达到更高的缓存功率和命中率。
  3. 高并发读写:JetCache 的缓存算法能够优化高并发读写场景,进步程序功用并降低体系压力。
  4. 高速拜访查询:JetCache 运用缓存,能够实现高速查询和拜访,削减等待时刻,并进步用户体验。

二.JetCache 的 API 和运用:

  1. 缓存管理:JetCache 供给了 CacheBuilder 类来创立缓存,以及 Cache 对象来操作缓存,例如 get、put、remove 等。在调用 Cache 对象的 put 办法时,能够运用注解 @Cache 来设置缓存时刻和称号等装备。
  2. 注解支撑:JetCache 供给了多种注解来实现缓存操作,例如 @Cached,@CacheUpdate, @CacheInvalidate 等。运用注解的办法,能够愈加方便地进行缓存操作,例如缓存预热、删去、更新等。
  3. 缓存类型:JetCache 支撑多种缓存类型,例如本地 memory、Redis、Tair 和 Memcached 等缓存,能够依据事务需求来挑选缓存类型。
  4. Spring 集成支撑:JetCache 供给了 Spring 集成支撑,能够经过注解来注入和装备缓存,简化运用流程。

三、SpringBoot整合JetCache

1.导入依赖

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

JetCache-Alibaba缓存框架

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

JetCache-Alibaba缓存框架
@Cached注解和@CreateCache的特点十分类似,可是多几个:

特点 默认值 描述
cacheName “” 缓存称号
area “default” 缓存区域
key “” 缓存的键
condition “” 缓存条件,需求经过 Spring EL 表达式的方式传入
unless “” 缓存排除条件,需求经过 Spring EL 表达式的方式传入
sync false 是否运用同步形式
sourceAvailable false 缓存数据源是否存在
cacheNullValue false 是否缓存 null 值
cacheValue true 是否缓存返回值
expire -1 缓存过期时刻,单位为秒
expireExpression “” 缓存过期时刻表达式
keyConvertor “” 缓存键转换器
serialPolicy “” 缓存值序列化战略
areaInKey false 缓存中是否包括缓存区域
areaInRegion false 缓存区域是否独立,即缓存区域是否区别不同实例
postCondition “” 缓存后置条件
suppressException false 是否疏忽反常
localLimit -1 本地缓存大小限制
cacheType “” 缓存类型,例如 caffeine、redis 等
conditionSatisfiedByValue false 是否依据缓存值来计算缓存条件,而不是办法参数

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);
    }
}

JetCache-Alibaba缓存框架
这和SpringCache很像,不过@Cached注解原生支撑了TTL(超时时刻),cacheType有LOCAL/REMOTE/BOTH三种挑选, 别离代表本地内存/长途Cache Server(例如Redis)/两级缓存,可依据状况选用,合理的运用LOCAL或BOTH类型能够降低Cache Server的压力以及我们供给的服务的响应时刻。