项目实战

用户信息查询接口中,使用@Cacheable注解

 绑定相关信息接口中,使用@CachePut更新用户信息到缓存

更新用户信息接口中,使用@CacheEvict删除缓存信息

使用步骤

添加依赖,maven 坐标如下:

使用 spring-cache 有三个步骤:

(1)在启动类上加入 @EnableCaching 注解;

(2)使用 CacheManager 初始化要使用的缓存框架,使用 @CacheConfig 注解注入要使用的资源(如果使用 RedisCacheManager,且只有一个初始化实例,这一步可省略);

(3)使用 @Cacheable 等注解对资源进行缓存。

注解说明

从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持,Spring对Cache的支持也有基于注解和基于XML配置两种方式。Spring Cache作用在方法上,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。

Spring内置的三大注解缓存是:

@Cacheable:缓存,表示如果缓存系统里没有这个数值,就将方法的返回值缓存起来;

@CacheEvict:删除缓存,表示执行方法的时候,清除某些缓存值。

@CachePut:更新缓存。

@CachePut搭配@Cacheable的区别

@Cacheable 的逻辑是:查找缓存 - 有就返回 -没有就执行方法体 - 将结果缓存起来;

@CachePut 的逻辑是:执行方法体 - 将结果缓存起来;

所以 @Cacheable 使用于查询数据的方法,@CachePut 使用于更新数据的方法。

@CachePut搭配@Cacheable使用

当需要根据请求改变值的时候,利用@CachePut将值改变并写入到缓存中,而@Cacheable标签除了第一次之外,一直是取的缓存的值。Cacheable一直读的缓存,实际数据已经改变了,那就不对了,就需要CachePut更新缓存值,那么Cacheable读的缓存值就对了

注意的点:

1、必须是同一个缓存实例。

2、key值必须是相同的。

好文

原理 -- https://blog.csdn.net/f641385712/article/details/94570960

https://blog.xinpapa.com/2019/07/24/cache/#cacheput

示例 -- https://www.cnblogs.com/coding-one/p/12403801.html

@CacheEvict 使用详解 -- https://www.cnblogs.com/coding-one/p/12408631.html

最新文章

  1. html你可能还不知道的一些知识点
  2. [Java] Spring MVC 知识点
  3. JAVA中MAP值保持顺序不变
  4. BaseAdapter的抽取
  5. ArrayList和LinkList区别
  6. C# 时间戳和时间的相互转换
  7. ubuntu13.04云主机部署gitlab6.6
  8. android ListView 中getview学习总结
  9. java中的hashcode和euqals的区别和联系
  10. 文件操作 系统备份和还原,压缩,解压 tar dump/restore
  11. C# Wpf异步修改UI,多线程修改UI(二)
  12. Java ---自定义标签
  13. git基本使用(搭建Git服务器)
  14. 关于vue生命周期
  15. java学习笔记--从c/c++到java转变
  16. Salty Fish 结对学习心得体会及创意照 (20165211 20165208)
  17. xampp + windows 配置 memcache流程
  18. asp.net self host and urlacl(解决UnHandledException Message:拒绝访问的问题)
  19. Android之框架20160721
  20. es学习-重建索引

热门文章

  1. 项目使用RQ队列的思考
  2. LeetCode初级算法之数组:217 存在重复元素
  3. html5shiv.js和respond.min.js作用说明(IE9及以下兼容)
  4. 手把手教你写DI_0_DI是什么?
  5. 学习笔记:Link Cut Tree
  6. AcWing 404. 婚礼
  7. Java为什么称为动态编译?
  8. Robot Framework+adb框架自动化测试Android设备案例⑹——源码地址、测试报告
  9. Android全面解析之由浅及深Handler消息机制
  10. 九、TestNG超时测试