springBoot高级——与缓存相关

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

 

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

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

 

 

三、如何在springboot中使用缓存

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

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

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

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

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

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

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

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

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

 

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

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

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

http://www.redis.cn/

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

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

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

 

四、缓存的原理

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

  缓存的运行流程:

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值