JSR-107缓存规范介绍

2025-05-23 02:50
文章标签 介绍 缓存 107 规范 jsr

本文主要是介绍JSR-107缓存规范介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧...

缓存是每一个系统都应该考虑的功能,它用来加速系统的访问,提升系统的性能。 比如说一些经常需要访问的高频热点数据,例如:电商网站的商品信息。 如果商品信息存储在数据库中,每次来查询商品信息都要来查询数据库的话,这样的操作耗时太大,代价也相对太大。 此时我们可以引入一个缓存中间件,将商品信息存放在缓存中,就不需要直接来查询数据库了。 先来查询缓存中是否有该商品的信息,如果有就直接拿来使用;如果没有的话,然后再去数据库中查询,然后再将数据放回到缓存。因为应用程序与缓存的交互是非常快的,这样的话就可以大大减缓数据库的压力。

再比如:一些临时性的数据,为某个用户的手机号发送了验证码,三分钟有效,过期删除。如果将这些数据存储在数据库中,也是非常有压力的。我们也可以将这些数据存储在缓存中间件中。系统直接从缓存中获取数据即可。

缓存在系统中用的还是非常多的。所以为了统一缓存的开发规范,提升系统的扩展性。J2EE 发布了 JSR-107规范。主要提供了5个接口。

1.什么是JSR-107

JSR是Java Specification Requests的缩写,意思是Java 规范提案。2012年10月26日JSR规范委员会发布了JSR 107(JCache API的首个早期草案)。JCache 规范定义了一种对Java对象php临时在内存中进行缓存的方法,包括对象的创建、共享访问、假脱机(spooling)、失效、各JVM的一致性等,可被用于缓存JSP内最经常读取的数据。
Java Caching 定义了5个核心接口,分别是CachingProviderCacheManagerCacheEntryExpiry

www.chinasem.cn
接口介绍
CachingProvider缓存提供者。 定义了创建、配置、获取、管理和控制多个 CacheManager。一个应用可以在运行期访问多个 CachingProvider。
CacheManager缓存管理器。 定义了创建、配置、获取、管理和控制多个唯一命名的 Cache,这些 Cache 存在于 CacheManager 的上下文中。一个 CacheManager 仅被一个 CachingProvider 所拥有。
Cache缓存组件。 是一个类似 Map 的数据结构并临时存储以 key 为索引的值。一个 Cache 仅被一个 CacheManager 所拥有。
Entry键值对。 是一个存储在 Cache 中的 key-value 对。
Expiry有效期。 每一个存储在 Cache 中的条目有一个定义的有效期。一旦超过这个时间,条目为过期的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过 ExpiryPolicy 设置。

2.应用调用缓存图示

应用来调用缓存,首先会先调用CachingProvider(缓存提供者),缓存提供者管理了多个CacheManager(缓存管理器),缓存管理器中才真正的Cache缓存。缓存管理器中可以管理不同类型的缓存,比如:Redis、EhCache 等。

在具体缓存组件中,我们还可以设置不同模块的缓存,比如:Redis 中我们可以来缓存 商品信息、热点数据 等不同模块数据,每个缓存都是Entry<K,V>键值对类型。并且我们可以对缓存设置Expiry过期时间,指定缓存存活的时间。

缓存在我们应用开qZWkRdEf发中的调用步骤,如下图所示:

JSR-107缓存规范介绍

3.JSR-107规范使用

在项目中使用 JSR-107规范,首先需要导入 Maven 依赖:

<depeandroidndency> 
	<groupId>javax.cache</groupId>
	<artifactId>cache-api</artifactId>
</dependency>

该包下提供了 CachingProvider 接口,我们可以通过 getCacheManager()方式来获取 CacheManager。 CacheManger 通过 createCache()、getCache() 方法来直接获取到缓存Cache,缓存的具体增删改查操作,就在 Cache 组件中。

JSR-107 作为一个 Java 规范,它定义的都是一些接口,类似于 JDBC 规范。它的好处在于:我们直接面向接口编程,需要用到哪种缓存的实现,我们来直接引入该缓存实现即可,系统就能运行起来。 然而:并不是市面上所有的缓存组件都提供了 JSR-107 规范的实现。如果我们选择的缓存中间件没有实现 JSR-107 规范接口,那么就需要自己来实现咯。整个过程 API 开发也比较麻烦,所以 JSR-107 规范在我们的日常开发中用的还是比较少。

4.Spring 缓存机制

既然 JSR-107 规范马失前蹄。Spring 为了简化项目开发,便为我们提供了自己的缓存机制。Spring 缓存机制底层概念同 JSRChina编程-107 是通用的,也定义了一些借口、注解等。所以后来在开发中,使用更多的也就是 Spring 缓存机制咯。

下一篇,我们就来继续了解 Spring 缓存机制。→→→→→点击跳转:Spring 缓存机制介绍

如果你还想要了解更多关于JSR-107规范相关,请移步此处学习:JSR107中文版(非官方)

到此这篇关于JSR-107缓存规范介绍的文章就介绍到这了,更多相关JSR-107缓存内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于JSR-107缓存规范介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154742

相关文章

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方