JCache 学习 (JSR-107)

       现在对软件性能要求越来越高,动不动每秒多少请求,多少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

不是所有的数据都一直存在缓存中不改变的,为缓存的数据添加过期的策略会让你的缓存更加灵活和高效。

猜你喜欢

转载自tangmingjie2009.iteye.com/blog/2042485
107