Redis教程

Redis缓存雪崩,缓存穿透,缓存击穿

本文主要是介绍Redis缓存雪崩,缓存穿透,缓存击穿,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

缓存雪崩因为缓存失效导致数据未加载到内存中,或者缓存时间大面积地失效,从而导致所有请求都会去查数据库,导致数据库、CPU和内存负载过高,甚至宕机。

1.超热数据设置为永久key

2、优化过期时间设置方案:不同类的数据设置不同的过期时间,每个key的时间都为当前类的过期时间+一个随机值

比如 A类90分钟 B类80分钟
那A001设置为90+随机值 ,B001设置为80+随机值。避免大量的 key 在同一时刻同时失效,造成缓存雪崩。

3、使用分布式锁重建缓存
当缓存不存在时,加锁,高并发下,只允许一个请求去数据库获取,获取完重新放入缓存。
分布式环境下使用Redis 分布式锁实现缓存重建,优点是设计思路简单,对数据一致性有保障;缺点是代码复杂度增加,有可能会造成用户等待。假设在高并发下,缓存重建期间 key 是锁着的,如果当前并发 1000 个请求,其中 999 个都在阻塞,会导致 999 个用户请求阻塞而等待。

4、双层缓存
redis与数据库之间再加一层 本地缓存ehcache,redis瞬间大部分数据过期,还可以从ehcache获取,撑一段时间

6、限流,降级策略
牺牲一部分请求,降低服务器压力

 

 

 

 

这篇关于Redis缓存雪崩,缓存穿透,缓存击穿的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!