---恢复内容开始---

JSR-107、Spring缓存抽象、整合Redis

一、JSR107 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设置。

 

           

图(1)关系图

二、Spring缓存抽象

Spring从3.1开始定义了org.springframework.cache.Cache 和org.springframework.cache.CacheManager接口来统一不同的缓存技术; 并支持使用JCache(JSR-107)注解简化我们开发;

• Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;
• Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache ,
ConcurrentMapCache等;
• 每次调用需要缓存功能的方法时,Spring会检查检查指定参数的指定的目标方法是否
已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法
并缓存结果后返回给用户。下次调用直接从缓存中获取。
• 使用Spring缓存抽象时我们需要关注以下两点;
1、确定方法需要被缓存以及他们的缓存策略
2、从缓存中读取之前缓存存储的数据

  

图2

三、几个重要概念&缓存注解

四、缓存使用

• 1、引入spring-boot-starter-cache模块
• 2、@EnableCaching开启缓存
• 3、使用缓存注解
• 4、切换为其他缓存

五、整合redis实现缓存

1. 引入spring-boot-starter-data-redis
2. application.yml配置redis连接地址
3. 使用RestTemplate操作redis
1. redisTemplate.opsForValue();//操作字符串
2. redisTemplate.opsForHash();//操作hash
3. redisTemplate.opsForList();//操作list
4. redisTemplate.opsForSet();//操作set
5. redisTemplate.opsForZSet();//操作有序set
4. 配置缓存、CacheManagerCustomizers
5. 测试使用缓存、切换缓存、 CompositeCacheManager

 

 

运行原理:

1、自动配置类:CacheAutoConfiguration

2、缓存的配置类

3、默认生效的配置类:

SimpleCacheConfiguration

4、给容器注册一个:

cacheManager:ConcurrentMapCacheManager

5、创建ConcurrentMapCache类型的缓存组件:它的数据将保存在ConcurrentMap中

 

运行流程:

开发中使用的开发中间件:redis、memcache、ehcache

整合rredis作为缓存:

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

1.安装redis,使用Docker

docker pull registry.docker-cn.com/library/redis

docker run -d -p 6379:6379 --name myredis registry.docker-cn.com/library/redis

2.引入redis的starter

3.配置redis的主机

@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot01CacheApplicationTests { @Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
RedisTemplate redisTemplate; @Autowired
EmployeeMapper employeeMapper; /**
* Redis 常见的5大数据类型
* String 字符串 、List列表、set集合、Hash散列、Zset有序集合
* stringRedisTemplate.opsForValue()[String 字符串]
* stringRedisTemplate.opsForList()[List列表]
* stringRedisTemplate.opsForSet()[set集合]
* stringRedisTemplate.opsForHash()[Hash散列]
* stringRedisTemplate.opsForZSet()[Zset有序集合]
*
*/
@Test
public void test01() {
// 给redis中保存数据
// stringRedisTemplate.opsForValue().append("msg","helloworld");
//String msg = stringRedisTemplate.opsForValue().get("msg");
// System.out.println(msg);
}
// 测试保存对象
@Test
public void test02() {
Employee empById = employeeMapper.getEmpById(1);
// 如果保存对象,使用jdk序列化机制,序列化后的数据保存到redis中
// redisTemplate.opsForValue().set("emp-01",empById);
// 1、将数据以json的方式进行保存
// (1)将自己对象转化为json
// (2) redisTemplate默认的序列化规则,改变默认的序列化规则。
}
@Test
public void contextLoads() {
} }

redis 对象键值对-----not ok!

Spring Boot与缓存的更多相关文章

  1. spring boot redis缓存JedisPool使用

    spring boot redis缓存JedisPool使用 添加依赖pom.xml中添加如下依赖 <!-- Spring Boot Redis --> <dependency> ...

  2. spring boot redis 缓存(cache)集成

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  3. Spring Boot Oauth2缓存UserDetails到Ehcache

    在Spring中有一个类CachingUserDetailsService实现了UserDetailsService接口,该类使用静态代理模式为UserDetailsService提供缓存功能.该类源 ...

  4. spring boot redis缓存入门

    摘要: 原创出处 泥瓦匠BYSocket 下载工程 springboot-learning-example ,工程代码注解很详细.JeffLi1993/springboot-learning-exam ...

  5. Spring Boot 数据缓存 - EhCache

    EhCache 集成 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider. 在 Spring Boot 中集成 E ...

  6. spring Boot 学习(二、Spring Boot与缓存)

    一.概述1. 大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力 2. 消息服务中两个重要概念: 消息代理(message broker)和目的地(destination) 当消息发送者 ...

  7. 25. Spring Boot与缓存 JSR-107、Spring缓存抽象

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

  8. spring Boot 学习(一、Spring Boot与缓存)

    JSR-107.Spring缓存抽象.整合Redis Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Ex ...

  9. Spring Boot 揭秘与实战(二) 数据缓存篇 - Redis Cache

    文章目录 1. Redis Cache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 Redis Cache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存 ...

随机推荐

  1. NetStateReceiver【监听网路状态变化】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 用来监控网络变化时的处理,一般用来toast提示或者扩展为其他作用. 效果图    代码分析 NetStateReceiver:网络 ...

  2. jenkins maven 自动远程发布到服务器,钉钉提醒团队

    jenkins 自动远程发布到服务器 1.安装jenkins 安装过程:自行百度 英文不好的,不要装最新版的jenkins.建议安装Jenkins ver. 2.138.4,此版本可以设置中文语言,设 ...

  3. ByteView和Sink

    久违啦米娜桑!!! 最近有点忙,一月有余没有更新了,实在对不起大家!!! 上线后看到不少朋友发的私信,感谢大家的赞许与信任,后面我会尽最大的努力按时更新,不断推出更优质的文章!!! 本来计划最后花1讲 ...

  4. 版本控制工具——Git常用操作(上)

    本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...

  5. k邻近算法(KNN)实例

    一 k近邻算法原理 k近邻算法是一种基本分类和回归方法. 原理:K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实 ...

  6. OpenCC的编译与多语言使用

    OpenCC全称Open Chinese Convert,是一个Github上面的开源项目,主要用于简繁体汉字的转换,支持语义级别的翻译.本文就来简单介绍一下该库的编译以及python.C++和JAV ...

  7. [转]How to Download and Setup Blue Prism

    本文转自:https://www.hopetutors.com/blog/uncategorized/how-to-download-and-setup-blue-prism/ The Downloa ...

  8. I/O输入流基础之FileInputStream

    InputStream:是所有字节输入流的父类,其作用是:用这个流把网络数据(getOutputStream()),文件系统的数据读入内存 由与  public abstract class Inpu ...

  9. javascript函数调用中的方法调用模式

    最近想起来之前看过的一种js语法,感觉很实用,但是又想不起来具体的写法.然后在网上浏览了一段时间,终于成功的再现了记忆中的那种语法,嗯~,还是那个熟悉的味道! 代码如下: <script> ...

  10. Nano Server速记

    入门参考https://docs.microsoft.com/zh-cn/windows-server/get-started/nano-server-quick-start 1.创建VHD Impo ...