Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强
总时长 104:45:00 共408P
此文章包含第166p-第p172的内容
缓存一致性问题解决
redisson使用lua脚本,所以的锁都保证了原子性
改之前的代码
锁的粒度越小越好
如11号商品和12号商品 用同一把锁,12的并发也会影响11
数据一致性
目前主要是两种模式: 双写和失效模式
使用Canal
使用Canal可以实现数据异构
如:它会分析每天用户的访问记录 和每天的商品信息的更新,然后通过某些算法进行分析计算,生成用户异构系统用户商品推荐表
SpringCache
两个方法(两个功能)
第一个方法 根据名称得到缓存
第二个方法 得到所有的缓存的名字
缓存如果是北京市,那缓存的名字就相当于北京市的各个区的名字
整合springCache
使用步骤
*
可以给多个缓存区放置
这里是jdk序列化后的结果 可以转成纯文本
自定义缓存
key记得加单引号否则spring会以为是表达式
这里的过期时间在配置文件里设置,是毫秒为单位的,切记 同一个过期时间,可能会导致redis雪崩
自己写一个组件配置类
@EnableConfigurationProperties(CacheProperties.class) 的这个注解就把这个CacheProperties组件放到容器中了啊
直接放到参数里
清除缓存
处理两个缓存
也可以直接删除这个分区的所有数据
最好去掉前缀 使用默认的前缀
原理和不足