Springboot使用@Cachable,首先一定要在启动类上面加上@EnableCaching很重要,不然缓存不上. 并且我们要只带caching是org.springframework包下的.

@SpringBootApplication
@MapperScan(basePackages = {"com.example.redis"})
@EnableCaching
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

其次需要在配置文件里面指定caching的缓存服务端

spring.cache.type=redis # caching的缓存客户端是redis
public class CachingTest{// 切记,这里的key如果是字符串一定要在双引号
// 里面加上单引号否则会报错,如果使用el表达式就不需要
// 单引号 如:key = "#id",unless是指是否不缓存本次数据.@Cacheable(cacheNames = {"test1"},key = "'key1'",unless = "false")public String show(){Return "返回值就是存入缓存的值";}// 注意:在请求@CachePut注释的方法时不会先去缓存里面查询
// 是否有当前key的值,而是直接执行方法然后存入缓存中,
// 也就是如果缓存有了key的值就是更新没有就添加.
// condition这里的意思就是当前是否要缓存到reids里面true缓存false不缓存@CachePut(cacheNames = {"test1"},key = "'key2'",condition = "true")public String show2(){Return "show2的缓存值";}
}

看一下缓存里面的存入数据的结构

可以看到我们规定的cacheNames就是最外层的文件夹名,key就是这个文件夹下的一个key名,值就是key对应的值.

// 设置缓存过期时间
spring:cache:redis:time-to-live: 毫秒值

1:注意事项:我们可以注意到@Cacheable有一个unless属性该属性true的时候就不缓存本次返回值.
2:当请求被@Cacheable注释的方法时,会先去缓存服务端查询是否有当前key的缓存,如果有就不执行当前方法,而是直接返回缓存的内容!!!
3:@Cacheable和@Cacheput不建议同时使用在一个方法上,因为@Cacheable是否缓存本次数据是更具unless控制,而@Cacheput如果没有其他属性控制,是一定会去更新或新增本次返回值.
4:很多同学注意到test1下面有一级空目录,这里的空目录其实是@Cacheable的命名规范:通过下面的key名字我们可以发现这里有两个冒号但其实我们平常只有一个冒号,这个空目录就是多出来的冒号导致,这个不用过多关注这个是@Cacheable自己的问题
5:如果两次请求的接口里面的参数相同那么就会直接请求缓存,反之就走代码逻辑,这里的参数相同是指上面存到redis里面的key值相同即可
6:在使用缓存的这些注解的时候切记要使用代理对象去调用否则是没办法生效的,因为这个实现也是基于aop的!

@Caching,@Cacheable,@CachePut的使用相关推荐

  1. 详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    注释介绍 @Cacheable @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @Cacheable 作用和配置方法 参数 解释 example value 缓 ...

  2. cacheable更新_详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    注释介绍 @Cacheable @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @Cacheable 作用和配置方法 参数 解释 example value 缓 ...

  3. Spring Cache缓存技术,Cacheable、CachePut、CacheEvict、Caching、CacheConfig注解的使用

    前置知识: 在Spring Cache缓存中有两大组件CacheManager和Cache.在整个缓存中可以有多个CacheManager,他们负责管理他们里边的Cache.一个CacheManage ...

  4. @Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig详解

    文章目录 一.概述 二.缓存注解种类 三.优劣势说明 四.如何使用? 五.详细介绍介绍 1)@Cacheable(常用) 1.value/cacheNames 属性 2.key属性 3.keyGene ...

  5. @EnableCaching、@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig:缓存核心注解,用来实现缓存功能...

    本文主要详解spring中缓存的使用. 背景 缓存大家都有了解过吧,主要用来提升系统查询速度. 比如电商中商品详情信息,这些信息通常不会经常变动但是会高频访问,我们可以将这些信息从db中拿出来放在缓存 ...

  6. 最全的Spring Boot缓存@Cacheable,@CachePut,@CacheEvict,@Caching,@CacheConfig注解

    1.添加依赖文件 <dependency><groupId>org.springframework.boot</groupId><artifactId> ...

  7. Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项

    文章目录 一.概述 二.缓存注解种类 三.优劣势说明 四.如何使用? 五.详细介绍介绍 1)@Cacheable(常用) 1.value/cacheNames 属性 2.key属性 3.keyGene ...

  8. 2021-10-12Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用

    从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该 ...

  9. cacheable 表达式_Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用

    从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该 ...

最新文章

  1. pdf.js 远程预览pdf文件 Error: file origin does not match viewer's
  2. html css网站开发兵书,程序员藏经阁--HTML+CSS网站开发兵书(附光盘)
  3. adb devices unauthorized解决方法
  4. python文件拷贝并校验_初级版python登录验证,上传下载文件加MD5文件校验
  5. Caffe部署中的几个train-test-solver-prototxt-deploy等说明 (一)
  6. mysql 压力测试知乎_MySQL 对于千万级的大表要怎么优化? - MySQL
  7. 如何计算一年总共有多少周_余额宝1万一天收益多少?如何计算?
  8. 区块链 PoS 共识——Tendermint
  9. 模板:半平面交(计算几何)
  10. linux gnome_GNOME,生日快乐:喜欢这个Linux桌面的8个理由
  11. Oracle游标使用大全
  12. 微信小程序点击事件传递参数的方法
  13. Laravel文档阅读笔记-Custom Authentication Login And Registration Using Laravel 8
  14. 【Cache篇】Linux中的Cache
  15. IBM服务器U盘安装CentOS6.8系统
  16. 写给数据分析入门者:一种通用的数据分析思路
  17. 黑马头条丨腾讯薪酬制度改革引争议;英特尔全国扩招女工程师;黑马100%就业真的吗......
  18. Maven编译失败: zip file is empty
  19. 应用-单向链表-数据结构和算法
  20. Unity3d 直升机空战游戏

热门文章

  1. 服务器物理机如何实现系统快照,Lvm快照实现物理备份之自动化
  2. 微服务09——中间件
  3. 蒲公英——APP内测分发平台
  4. ThinkPad T440s 改 T450s
  5. SaltStack简介
  6. python plt.imshow函数显示图像颜色失真
  7. 在vue 中 ,dom操作滚动条 scrollTop无效
  8. Java多线程:Executors
  9. 怎么从Chrome浏览器中导出扩展程序为crx文件?
  10. 【计算机科学基础】图灵机