分布式缓存Spring Cache

一、缓存里的数据如何和数据库的数据保持一致?

  缓存数据一致性
 1)、双写模式
 2)、失效模式

1、缓存数据一致性-双写模式

分布式缓存Spring Cache_第1张图片

2、 缓存数据一致性-失效模式

分布式缓存Spring Cache_第2张图片
我们系统的一致性解决方案:
1、缓存的所有数据都有过期时间,数据过期下一次查询触发主动更新
2、读写数据的时候,加上分布式的读写锁。经常读写会有很大的影响

3、缓存数据一致性-解决方案

分布式缓存Spring Cache_第3张图片

4、缓存数据一致性-解决-Canal

分布式缓存Spring Cache_第4张图片

二、Spring Cache简介

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

2、Cache 接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache 接 口 下 Spring 提 供 了 各 种 xxxCache 的 实 现 ; 如 RedisCache , EhCacheCache , ConcurrentMapCache 等;

3、 每次调用需要缓存功能的方法时,Spring 会检查检查指定参数的指定的目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。

4、 使用 Spring 缓存抽象时我们需要关注以下两点;
(1)、确定方法需要被缓存以及他们的缓存策略
(2)、从缓存中读取之前缓存存储的数据

三、Spring Cache基础概念

分布式缓存Spring Cache_第5张图片

四、Spring Cache注解

分布式缓存Spring Cache_第6张图片
分布式缓存Spring Cache_第7张图片

五、Spring Cache表达式语法

分布式缓存Spring Cache_第8张图片

六、缓存穿透问题解决

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

允许 null 值缓存

你可能感兴趣的:(分布式,缓存,spring)