1.击穿
- 添加分布式锁,当发现缓存为空时只允许一个请求到DB进行数据加载
2.穿透
- 布隆过滤器
3.雪崩
在高并发下,大量缓存key在同一时间失效,大量请求直接落在数据库上,导致数据库宕机
解决方案:
失效时间随机,避免大量数据同一时间失效
数据用不过期
定期调度刷新数据,数据存活时间无限续命
数据分散在不同机器分片上,压力分摊
4.分布式锁
方案一:SETNX + EXPIRE
方案二:SETNX + value值是(系统时间+过期时间)
方案三:使用Lua脚本(包含SETNX + EXPIRE两条指令)
方案四:SET的扩展命令(SET EX PX NX)
方案五:SET EX PX NX + 校验唯一随机值,再释放锁
方案六: 开源框架~Redisson
方案七:多机实现的分布式锁Redlock
https://www.cnblogs.com/wangyingshuo/p/14510524.html
需要考虑 :锁重入,死锁,公平锁?非公平锁?
zk分布式锁与redis分布式锁的区别?
https://blog.csdn.net/xiaoxiaole0313/article/details/107011095/