一、缓存里的数据如何和数据库的数据保持一致?
缓存数据一致性
1)、双写模式
2)、失效模式
1、缓存数据一致性-双写模式
2、 缓存数据一致性-失效模式
我们系统的一致性解决方案:
1、缓存的所有数据都有过期时间,数据过期下一次查询触发主动更新
2、读写数据的时候,加上分布式的读写锁。经常读写会有很大的影响
3、缓存数据一致性-解决方案
4、缓存数据一致性-解决-Canal
二、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注解
五、Spring Cache表达式语法
六、缓存穿透问题解决
<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 值缓存