Java 缓存中间件
关键词:Spring Cache、J2Cache、JetCache
一 、JSR 107
JSR107 中制订了 Java 缓存的规范。
因此,在很多缓存框架、缓存库中,其 API 都参考了 JSR 107 规范。
关键词:Spring Cache、J2Cache、JetCache
JSR107 中制订了 Java 缓存的规范。
因此,在很多缓存框架、缓存库中,其 API 都参考了 JSR 107 规范。
EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。
关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache
最简单的进程内缓存可以通过 JDK 自带的 HashMap
或 ConcurrentHashMap
实现。
适用场景:不需要淘汰的缓存数据。
缺点:无法进行缓存淘汰,内存会无限制的增长。
HTTP 缓存分为 2 种,一种是强缓存,另一种是协商缓存。主要作用是可以加快资源获取速度,提升用户体验,减少网络传输,缓解服务端的压力。
不需要发送请求到服务端,直接读取浏览器本地缓存,在 Chrome 的 Network 中显示的 HTTP 状态码是 200 ,在 Chrome 中,强缓存又分为 Disk Cache (存放在硬盘中)和 Memory Cache (存放在内存中),存放的位置是由浏览器控制的。是否强缓存由 Expires
、Cache-Control
和 Pragma
3 个 Header 属性共同来控制。
缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。
如果想深入学习缓存,建议先了解一下 缓存基本原理,有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。
缓存是一种利用空间换时间的设计,其目标就是更快、更近。
众所周知,当今是一个互联网时代,而互联网应用几乎遍及我们日常生活的方方面面。一般而言,一个互联网应用的请求/响应流程会有以下几个主要流程:
Spring 中提供了缓存功能的抽象,允许你在底层灵活的替换缓存实现,而对上层暴露相同的缓存接口。
Spring 的缓存 API 以注解方式提供。
Spring 为缓存功能提供了注解功能,但是你必须启动注解。
你有两个选择:
(1) 在 xml 中声明
像上一节 spring-ehcache.xml 中的做法一样,使用<cache:annotation-driven/>