【后端进阶】Spring Boot缓存

缓存

首次查询数据库后,将数据存到缓存中,下次直接从缓存中取数据,效率更高。

使用

  • App类上加@EnableCaching注解。
  • Service方法上加@Cacheable注解。

原理

  • CacheAutoConfiguration类使用selectImports方法(Return String[]),导入缓存配置类,不同缓存配置在不同条件下生效。
  • 不同缓存配置注册不同的CacheManager,缓存管理器可以获取和创建Cache,将数据存到不同的缓存组件中。

运行流程

@Cacheable

  • Service方法运行前,先根据CacheNames查Cache(第一次获取会自动创建(单例))。
  • 使用KeyGenerator根据对象、方法、参数生成key(可通过SqEL表达式设置)。
  • 没有查到缓存则调用目标方法,将目标方法返回结果存入缓存

@CachePut

修改数据库,同时更新缓存。

@CacheEvict

缓存删除。

@Caching

定义复杂缓存规则。

@CacheConfig

作用于整个类。

高级用法

自定义KeyGenerator

  • 创建配置类实现@Bean方法,重写KeyGeneator中的generate方法并返回。
  • @Cacheable中指定keyGenerator

指定CacheManager

指定condition

  • @Cacheable中指定conditionunless

整合Redis

  • 引入依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
  • 服务配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
  • 自定义序列化器
    参考:https://www.jianshu.com/p/5ddd56f8bb83

猜你喜欢

转载自blog.csdn.net/qq_39573785/article/details/120562641