JSR-107缓存规范介绍

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

本文主要是介绍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

相关文章

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命