- mysql等组件最大连接数一般10000
- 读多写少缓存 读少写多队列
- 雪崩(获取车次有没有票)
- 互斥锁-限流
- rearrentlock
- 1.redis获取
- 2.没命中加锁
- 3.再次确认缓存是否命中
- 4.然后在取db放入redis返回
- 5.最后释放锁
- 缺点粒度小
- concurrenthashmap<String,String> lockmap
- 1.redis获取
- 2.没命中加锁
- 1.boolean lock = false; lock = lockmap.putifAbsent(seq,“lock”)==null;
- 1.null就没成功
- 从缓存中获取;阻塞等待(线程sleep一定时间)
- 2.成功放什么返回什么
- 取db放redis
- 1.null就没成功
- 1.boolean lock = false; lock = lockmap.putifAbsent(seq,“lock”)==null;
- 3.lockmap中remove掉 lockmap.remmove(seq);
- rearrentlock
- 互斥锁-限流
- 缓存降级策略-牺牲数据准确性(12306余票仅仅展示作用(告诉有无))
- 备份缓存 不过期
- rearrentlock
* 1.redis获取
* 2.没命中加锁
* 3.再次确认缓存是否命中
* 4.然后在取db放入redis返回
* 5.最后释放锁
* 缺点粒度小- concurrenthashmap<String,String> lockmap
- 1.redis获取
- 2.没命中加锁
- 1.boolean lock = false; lock = lockmap.putifAbsent(seq,“lock”)==null;
- 1.null/没成功抢到锁
- 降一档 备份缓存中拿
- 有 取出
- 无 阻塞等待从主缓存中拿(或者再降一档直接返回0)
- 降一档 备份缓存中拿
- 2.成功抢到锁/放什么返回什么
- 取db更新redis主和备
- 1.null/没成功抢到锁
- 1.boolean lock = false; lock = lockmap.putifAbsent(seq,“lock”)==null;
- 3.lockmap中remove掉 lockmap.remmove(seq);
- concurrenthashmap<String,String> lockmap
缓存雪崩解决/缓存降级
最新推荐文章于 2024-05-20 21:12:48 发布