博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cache 缓存处理
阅读量:3946 次
发布时间:2019-05-24

本文共 1460 字,大约阅读时间需要 4 分钟。

0 = “org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration”

  • 1 = “org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration”
  • 2 = “org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration”
  • 3 = “org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration”
  • 4 = “org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration”
  • 5 = “org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration”
  • 6 = “org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration”
  • 7 = “org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration”
  • 8 = “org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration”[默认缓存]
  • 9 = “org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration”
  • 分析源码:
  • 1.默认采用的是SimpleCacheConfiguration 使用 ConcurrentMapCacheManager
    1. getCache 获取的是 ConcurrentMapCache 缓存对象进行存取数据,它使用ConcurrentMap<Object, Object>对象进行缓存数据
  • @Cacheable(cacheNames = “user”)
  • 第一次请求时:
  • 3.当发送第一次请求时,会从cacheMap.get(name)中获取有没有ConcurrentMapCache缓存对象,如果没有则创建出来,
  • 并且创建出来的key就是通过@Cacheable(cacheNames = “user”)标识的name值
  • 4.接着会从ConcurrentMapCache里面调用lookup获取缓存数据,通过key值获取的,
  • 默认采用的是service方法中的参数值,如果缓存中没有获取到,则调用目标方法进行获取数据,获取之后则再将它放到缓存中(key=参数值,value=返回值)
  • 第二次请求:
    1. 如果再次调用 则还是先ConcurrentMapCacheManager.getCache()获取缓存对象,如果有则直接返回,如果没有则创建
    1. 然后再调用 ConcurrentMapCache.lookup方法从缓存中获取数据, 如果缓存有数据则直接响应回去,不会再去调用目标方法,
  • 第三次请求与第二次请求一样.
  • 如果缓存中没有缓存管理器,则与第一次请求一致
  • 注意:如果引用了redis缓存 后,则springboot会自动的切换为redis缓存存取数据

转载地址:http://chlwi.baihongyu.com/

你可能感兴趣的文章
AI 人工智能第一课 从贝叶斯定理开始
查看>>
朴素贝叶斯python实现
查看>>
Logistic回归原理及公式推导
查看>>
并发性与并行性 并发性与并行性
查看>>
惰性求值,可组合和模块化的JavaScript
查看>>
How to Extend Django User Model 如何扩展Django用户模型
查看>>
两个行业的故事:编程语言与富裕国家和发展中国家之间的差异
查看>>
15个用于管理MySQL服务器mysqladmin命令
查看>>
服务器端I / O性能:Node,PHP,Java与Go
查看>>
多行文本编辑时,同一行编辑不同类型的字符时自动换行的问题
查看>>
如何使开机动画只播一次
查看>>
如何在平台上实现LED灯的效果?如信号灯,来短信/来电时LED动画闪烁
查看>>
restore factory属性的enable和disable
查看>>
Android LOG机制流程图
查看>>
如何在JNI中抛异常
查看>>
Android应用程序的完全退出
查看>>
Task和Activity相关的一些属性
查看>>
JAVA系统属性之user.home
查看>>
Android代码截屏
查看>>
Android中打印代码的调用层次
查看>>