欢迎光临散文网 会员登陆 & 注册

我利用十二个周末手写了JAVA五大框架源码!喂饭氏教程免费分享,三天掌握SSM丨

2023-07-02 21:31 作者:回乡牧羊  | 我要投稿

缓存击穿


【问题描述】:


【redis】中小公司Redis缓存架构... P56 - 10:42


缓存里没数据,但是数据库里面有数据。大批量数据在同时间时间,在数据过期后突然被大量请求,导致缓存被击穿,糟踏数据库。


【解决办法】:


【redis】如何解决线上缓存穿透问题 P57 - 00:01


对超时时间设置为随机,避免同一时间大量数据过期。



缓存穿透 


【问题原因】: 


【redis】如何解决线上缓存穿透问题 P57 - 01:19


假设在一个秒杀系统下,误删了数据库中某一个商品,大量请求在缓存中没有找到数据,这就会去数据库里面找,但是数据库里面也没有,最终导致数据库抗不住压力。这就是缓存穿透,缓存穿透会将所有后端所有存储层都穿透掉。影响:实际数据库中没有数据,却还有大量请求不断涌进来,透缓存,透数据库。


【解决办法】:


【redis】如何解决线上缓存穿透问题 P57 - 05:06


对无效的数据在缓存中设置一个空值。当首次请求来时,在数据库中查询到数据则在缓存中缓存真实的值,没有数据放一个空值。




突发性的热点缓存重建导致系统压力暴增问题


【问题原因】: 


【redis】如何解决线上缓存穿透问题 P57 - 10:12


在电商直播环境下,大V直播间推荐某一款冷门商品,主播一上链接,大量用户访问这个商品,恰巧这个商品不在缓存中,那么就会导致大量数据击穿缓存,糟蹋数据库。

不确定某个商品、或微博热搜在什么时间下,数据量暴增


【解决办法】:


【redis】如何解决线上缓存穿透问题 P57 - 14:34


双重检测机制(DCL)。在第一次没有数据时,使用加锁处理重建。使用分布式锁对查询的数据做缓存重建。使用jedisson分布式锁。

并发重建锁优化: hotCacheCreateLock.tryLock(2,TimeUnit.SECONDS);



缓存与数据库双写不一致问题


【问题描述】:


【redis】Redis分布式锁解决缓存... P59 - 13:12


两条线程依次执行数据库余额更新操作,正常情况下,线程要把余额更新成6,线程2再更新成5。但是在高并发复杂的环境下,线程1稍微晚一秒中执行,被线程2先执行完把数据更新成了5,此时线程1在执行跟新则会把5改成6。


【解决办法】:


【redis】大促压力暴增导致分布... P60 - 00:03


使用分布式事务锁解决。针对获取数据时和更新时加锁处理,最后使用读写锁优化。针对读多写少的场景进行分离,使读操作可以并行,写操作进行互斥。

redis实现读写锁: redisson.getReadWriteLock();



雪崩问题


【问题描述】:


【redis】利用多级缓存架构解决Red... P61 - 16:00


redis撑死处理十万+数据,在单节点下经受不住突如其来的几十或几百万条请求,即使集群也无法分担压力。由于缓存宕机,导致应用服务一个奔溃。


【解决办法】:


【redis】利用多级缓存架构解决Red... P61 - 19:30


限流。多级缓存架构:jvm进程缓存(缺点1.无法放大量数据 2.数据不一致)。


我利用十二个周末手写了JAVA五大框架源码!喂饭氏教程免费分享,三天掌握SSM丨的评论 (共 条)

分享到微博请遵守国家法律