本文只介绍理论
理论参考 SpringBoot的缓存实现Cache和自定义缓存管理器
详细使用方法参考
spring cache 学习 —— @Cacheable 使用详解
SpringCache之@CacheEvict注解的使用说明
spring cache 学习——@CachePut 使用详解
Cacheable
运行流程:
1、方法运行之前,先去查询Cache(缓存组件),按照cacheNames指定的名字获取;(CacheManager先获取相应的缓存),第一次获取缓存如果没有Cache组件会自动创建。
2、去Cache中查找缓存的内容,使用一个key,默认就是方法的参数;key是按照某种策略生成的;默认是使用keyGenerator生成的,默认使用SimpleKeyGenerator生成key;SimpleKeyGenerator生成key的默认策略;如果没有参数;key=new SimpleKey();如果有一个参数:key=参数的值如果有多个参数:key=new SimpleKey(params);
3、没有查到缓存就调用目标方法;
4、将目标方法返回的结果,放进缓存中@Cacheable标注的方法执行之前先来检查缓存中有没有这个数据,默认按照参数的值作为key去查询缓存,如果没有就运行方法并将结果放入缓存;以后再来调用就可以直接使用缓存中的数据;
Cacheput
更新缓存,就是相当于再去查询数据库然后将结果放入缓存,从而将缓存中的数据进行更新的操作。
CacheEvict
CacheEvict是Spring框架中的一个注解,它可以用来清除缓存。当我们使用CacheEvict注解时,它会在方法执行之前或之后清除缓存。CacheEvict注解有一些属性,可以用来指定要清除的缓存名称、缓存键等。
CacheEvict的原理非常简单。当我们使用CacheEvict 注解时,它会在方法执行之前或之后清除缓存。具体来说,它会在方法执行之前或之后调用缓存管理器的evict方法,将指定的缓存清除掉。缓存管理器会根据缓存名称和缓存键来查找要清除的缓存,然后将其清除。
使用CacheEvict注解可以带来很多好处。首先,它可以帮助我们解决缓存数据的过期问题。当缓存数据过期时,我们可以使用CacheEvict注解来清除缓存,从而保证缓存数据的及时更新。其次,它可以帮助我们解决缓存数据的不一致问题。当我们修改了数据库中的数据时,我们可以使用CacheEvict 注解来清除缓存,从而保证缓存数据的一致性。
CacheEvict是一种非常有效的清除缓存的方法。它可以帮助我们解决缓存数据的过期、不一致等问题,从而提高应用程序的性能和可靠性。如果你正在开发一个需要使用缓存的应用程序,那么我建议你使用CacheEvict 注解来清除缓存。它会让你的应用程序更加稳定、可靠。