springBoot高级——与缓存相关

    xiaoxiao2022-07-07  211

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

     

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

    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)