欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

来了解一下---JSR107缓存规范(Java 规范提案)

程序员文章站 2022-06-19 13:53:02
...

前言

这个还是有需要了解的,记得有次面试官问到redis的时候,突然问你了解过缓存规范吗?
我懵了,这是啥?我还以为有是使用redis的管理工具,就跟她扯了Jedis和redisTemplate的内容,然后我他说我想要了解的不是这个,它说道我想要了解的是JSR管理规范,但是那时候我根本不知道这个是什么,只能说有空会在去了解的。

不过说实在这个东西也只要了解一下就行了

核心内容

Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry

  • CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。

  • CacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。

  • Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个Cache仅被一个CacheManager所拥有。

  • Entry是一个存储在Cache中的key-value对。

  • Expiry 每一个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置

来了解一下---JSR107缓存规范(Java 规范提案)

依赖

使用JSR107可以添加下面的包

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

几个重要的缓存概念和注解

名称 解释
Cache 缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等
CacheManager 缓存管理器,管理各种缓存(Cache)组件
@Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
@CacheEvict 清空缓存
@CachePut 保证方法被调用,又希望结果被缓存(缓存更新)
@EnableCaching 开启基于注解的缓存
keyGenerator 缓存数据时key生成策略
serialize 序列化

后记

一般不直接使用JSR-107开发,因为JSR-107仅仅定义了接口,而没有实现,直接通过JSR开发非常麻烦,
现在spring官方根据缓存规则,它出了一个自己的缓存抽象,他的实现模式就是JSR-107

相关标签: # redis