springBoot高级——与缓存相关

一、两张图理解缓存中的成员部分:

springBoot高级——与缓存相关_第1张图片

springBoot高级——与缓存相关_第2张图片

 

二、几个重要概念&缓存注解

  • Cache   :      缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等
  • CacheManager   :  缓存管理器,管理各种缓存(Cache)组件
  • @Cacheable   : 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
  • @CacheEvict :清空缓存
  • @CachePut: 保证方法被调用,又希望结果被缓存。 这个可以更新缓存。
  • @EnableCaching  :开启基于注解的缓存
  • keyGenerator : 缓存数据时key生成策略
  • serialize  :缓存数据时value序列化策略

 

 

三、如何在springboot中使用缓存

springboot给我们提供了缓存抽象。

  • 1.创建项目的时候,引入spring-boot-starter-cache模块

springBoot高级——与缓存相关_第3张图片

  • 2、@EnableCaching开启缓存
  • 3、使用缓存注解

    @Cacheable 表示这个方法可以进行缓存

springBoot高级——与缓存相关_第4张图片

  @CachePut :这个是先进行操作,同时又更新缓存。

springBoot高级——与缓存相关_第5张图片

springBoot高级——与缓存相关_第6张图片

 @CacheEvict :缓存清除。比方说,我们要进行数据的删除了,显然缓存中的数据我们是也要清除掉的。

springBoot高级——与缓存相关_第7张图片

@CacheEvict 有一个属性,默认值是false,当我们置为true的时候,就会将缓存中的东西全部清空。

springBoot高级——与缓存相关_第8张图片

@CacheEvict 有一个属性,默认值是false,代表我们在方法执行之后删除缓存,当我们置为true的时候,不管方法是否能顺利执行,都要把缓存删除掉。

springBoot高级——与缓存相关_第9张图片

@Caching  这是一个组合注解,这用于复杂的情况,需要我们组合来使用注解的时候。

springBoot高级——与缓存相关_第10张图片

 

@CacheConfig 可以配置公共的部门,比方说都有一个缓存名

springBoot高级——与缓存相关_第11张图片

  • 4、切换为其他缓存(这一块不够详细,等有时间回头再重新丰富一下)

  在开发中我们多数会选择使用其它的缓存,入redis。如果对redis不太熟悉的话,可以到我贴的中文网上去快速的学习。

http://www.redis.cn/

  做了入门以后,就可以开始使用了。

下边贴一篇我转载的文章,关于redis的使用:

https://blog.csdn.net/star1210644725/article/details/90509967

 

四、缓存的原理

springBoot高级——与缓存相关_第12张图片

    可以进行缓存和我们的自动配置类有关,在默认情况下,使用红框里边的缓存,底层数据结构是一个线程安全的Map,也就是说缓存就是在做用空间换时间的事。

  缓存的运行流程:

  • Cachemanager(缓存管理者, 在没有指定的情况下,默认使用ConcurrentMapCacheManager) 先去查询指定名字的缓存,在第一次调用肯定没有,这就要创建这个名字的缓存。
  • 在cache组件中去查找指定键值Key的值。
  • 如果是第一次进行查询,缓存里边肯定是没有数据的,那就要调用目标方法
  • 将目标方法返回的结果放在缓存中,供下一次缓存使用。

 

 

你可能感兴趣的:(SpringBoot)