Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强
总时长 104:45:00 共408P
此文章包含第151p-第p157的内容
简介

数据库承担落盘(持久化)工作
 




拿map做缓存
这种是本地缓存,会有一些问题
 
 
 


 分布式系统无法同步,而且会有数据一致性的问题
 
分布式缓存 应该使用缓存中间件


 
 redis内存不足时可以使用分片集群
 
整合redis

ctrl+n
 
 
 
 


 
检查是否存在 使用的StringUtils是org.springframework家的
 
使用json的好处 跨语言跨平台兼容
 
序列化与反序列化
 

 加了redis缓存后的压力测试
 
 

 
 
两种解决方法:
 1 升级lettuce客户端 2021年12月已经没这个问题了 (没压测到堆内存溢出的,是因为spring引用的lettuce版本升级了 不是5.1.8了)
 2 切换使用jedis
 
使用jedis:先排除lettuce 再使用jedis
 

 

吞吐量400 无异常
 
 
 
lettuce和jedis都封装了redis的api ,然后redisTemplate封装了这两种,所以可以用redisTemplate 也可以直接用jedis操作redis
 
 

缓存失效问题
缓存穿透 大量请求查询一个永不存在的数据

缓存雪崩 大量key同时失效

缓存击穿 热点词汇失效后 大量请求涌入

 

加锁
同步代码块

 
分布式锁

this 当前实例对象
 spring容器默认是单实例对象,但是多个机器就不行了
 
 
 
 
应该这样
 
 
多复制几个程序 模拟分布式
 
 



















