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容器默认是单实例对象,但是多个机器就不行了
应该这样
多复制几个程序 模拟分布式