现在对软件性能要求越来越高,动不动每秒多少请求,多少PV,多少并发。
提高软件产品性能的一个很好的方式是使用缓存。把重要的经常访问的数据放到内存中,每次请求过来了直接从缓存中取,这样要比从磁盘或者数据库中要快很多。
现阶段公司的分布式缓存产品想加一个对Java的访问接口,于是有时间可以光明正大的学习JCache的内容了。
一、JSR-107是什么?
要回答这个问题,首先要知道JSR是什么,JSR是Java Specification Requests 的缩写 ,Java规范请求,故名思议提交Java规范,大家一同遵守这个规范的话,会让大家‘沟通’起来更加轻松。 规范是很重要的 ,举个例子大家都知道红灯停,路灯行吧,如果每个城市的信号灯代表不一样,那就麻烦了,B城市红灯行,绿灯停,C城市甚至出现紫灯行,闪灯行,想想都知道,如果我们保证不出问题,必须知道每个城市的信号等代表的意义。
我们一直使用的JDBC就一个访问数据库的一个规范的例子。
JSR-107呢就是关于如何使用缓存的规范。
二、JSR-107有什么?
写过缓存应用的童鞋都会知道,使用缓存大概有以下步骤
1. 向电脑申请一块空间作为缓存
2. 为缓存定义你自己的数据结构
3. 向缓存中写数据
4. 从缓存中读数据
5. 不再使用缓存时,清空你锁申请的内存空间
大概这么多吧,当然里面还有很多细节性的东西,比如过期设置呀,分布式设置呀,是不是要持久化呀,是不是要支持事务呀,要不要加锁呀.......
JSR-107呢就是对缓存常用的操作做了一个抽象,然后给出一个API接口,不同的缓存产品只要实现了这些接口就可以了。使用缓存的用户能也只要调用这些接口就能得到不同产品的缓存服务,而不用悲催的来来回回学习不同缓存的API,更加悲催的是API还没有看明白,某技术就已经黄了。
最新版的JSR-107的API 规范已经在2013年11月16日出1.0 的稳定版本了。
你可以从官网得到最新的版本。
下面简单说下从官网文档得到的1.0 的缓存API 的核心概念。
1. CachingProvider
定义了建立,配置,得到,管理和控制0个或多个CacheManager,一个应用在运行时可能访问0个或者多个CachingProvider。
2.CacheManager
它定义了建立,配置,得到,管理和控制0个或多个有着唯一名字的Cache ,一个CacheManager被包含在单一的CachingProvider.
3. Cache
Cache是一个Map类型的数据结构,用来存储基于键的数据,很多方面都像java.util.Map数据类型。一个Cache 存在在单一的CacheManager.
4. Entry
Entry是一个存在在Cache的键值对
5. ExpiryPolicy
不是所有的数据都一直存在缓存中不改变的,为缓存的数据添加过期的策略会让你的缓存更加灵活和高效。
相关推荐
JSR-107(JCache API)正在紧锣密鼓的制定当中,以后会成为Java EE 7的一部分。JSR-107这些年有些声名狼藉,因为它是一个很老的规范,但到现在还没有完成,不过随着对缓存的需求越来越多,JSR-107最终是要问世的。
JCache(JSR107)示例 我在有关JCache的演讲中使用了许多示例。 简单的缓存和配置 CacheLoader,用于通读到后端(可能是RDBMS) CacheWriter,用于写到后端 带有过滤器的CacheListener,以获取有关Cache事件的回调...
处理程序由 JCache (JSR-107) 支持。 您必须提供该缓存。 配置对象后,您必须将 CacheHandler 附加到您的端口: MutableConfiguration< String> config = new MutableConfiguration<> (); config . setTypes( ...
Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发;大家一起来学习cache的用法
具有持久性的 JCache 示例 使用 Infinispan 作为缓存提供程序和 MapDB 作为持久性提供程序的示例 JavaEE 7 应用程序。 仅使用 JSR 107 标准功能将缓存保留到文件中。 使用 Wildfly 8.2 和 Infinispan 7 进行测试。
JSR107 他是接口 面向接口编程 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry和Expiry。 1. CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用...
关于如何将 javax.cache API 与 CDI 一起使用的简单示例... 设置的核心是 org.jsr107.ri:cache-annotations-ri-cdi,它为 CDI 环境(即 Weld,它只在测试运行器中显式使用,所以没有测试可以使用任何其他 CDI 实现)。
ehcache-jcache 是 ehcache 对 JCache 标准 API (JSR107) 的实现。 标签:ehcache
该项目使用了一个小的 CDI 扩展 - 、标准的 JCache JSR-107 注释和来自 JCache 参考实现的拦截器。 该项目旨在展示如何尽可能简单地使用这些工具向应用程序添加缓存。 向应用程序添加缓存需要以下步骤:添加依赖项...
JSR107(JCache) 关于 JCache是Java缓存API。 它由JSR107定义。 它定义了供开发人员使用的标准Java缓存API和供实现者使用的标准SPI(“服务提供商接口”)。 发布 2019年5月10日:1.1.1维护版本。 2017年12月16日...
请参阅 JSR-107 、 和。 基本操作暂时实现。 部分缺失/缺失 到期由底层 couchbase 存储桶管理,不会通知 不支持 EntryProcessors 没有悲观锁/分布式锁。 使用 Couchbase 乐观锁来尽最大努力来近似 JSR107 一致性...
为了提高集成度,扩展模块中提供了 JSR-107 JCache 和 Guava 适配器。 JSR-107 标准化了基于 Java 6 的 API,以牺牲特性和性能为代价,最大限度地减少供应商特定代码。 Guava 的 Cache 是前身库,适配器提供了简单...
JSR107(JCACHE)是用于缓存的Java API。 需要一个net.sf.jsr107软件包名称,以允许在JSR107完成之前发布软件。 这样,任何用户都只需将其软件包名称更改为javax.cache。
并支持使用JCache(JSR- 107)注解简化我们开发; • Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; • Cache接 口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache , ...
扩展 JCache 插件的插件必须实现此方法并返回由 JSR 107 的某些实现(如提供的CacheManager实际实例。 要扩展此插件或以任何其他方式依赖它,请将以下依赖项添加到您的插件中: <dependency><groupId>org.jenkins-c...
spymemcached-jcache是使用spymemcached作为memcache客户端的JSR107 JCache提供程序。 特征 按缓存名称支持名称空间,缓存名称应为\ w + 添加分隔符支持,默认为$。 您可以在网址中设置分隔符,例如memcached...
结果缓存,用于加速热门数据的访问速度,Dubbo提供声明式缓存,以减少用户加缓存的工作量。...threadlocal当前线程缓存,比如一个页面渲染,用到很多portal,每个portal都要去查用户信息,通过线程缓存,...jcache与JSR107
JBoss Cache项目Leader的培训PPT Agenda Overview and history Current architecture and API Features Local vs....partitioning Locking - Optimistic vs.... JSR 107 - JCACHE Project roadmap Participating