PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > 编程杂谈 > 正文

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

    作者:admin来源:网络浏览:时间:2021-03-12 10:58:06我要评论
    导读:缓存穿透就是客户持续向服务器发起对不存在服务器中数据的请求。客户先在 Redis 中查询,查询不到后去数据库中查询。缓存击穿就是一个很...
    缓存穿透
    就是客户持续向服务器发起对不存在服务器中数据的请求。客户先在 Redis 中查询,查询不到后去数据库中查询。

    缓存击穿
    就是一个很热门的数据,突然失效,大量请求到服务器数据库中。

    缓存雪崩
    就是大量数据同一时间失效。
    打个比方,你是个很有钱的人,开满了百度云,腾讯视频各种杂七杂八的会员,但是你就是没有 netflix 的会员,然后你把这些账号和密码发布到一个你自己做的网站上,然后你有一个朋友每过十秒钟就查询你的网站,发现你的网站没有 Netflix 的会员后打电话向你要。你就相当于是个数据库,网站就是 Redis。这就是缓存穿透。
    大家都喜欢看腾讯视频上的《水果传》,但是你的会员突然到期了,大家在你的网站上看不到腾讯视频的账号,纷纷打电话向你询问,这就是缓存击穿。
    你的各种会员突然同一时间都失效了,那这就是缓存雪崩了。
    缓存穿透
    接口层增加校验,对传参进行个校验,比如说我们的 id 是从 1 开始的,那么 id<=0 的直接拦截;
    缓存中取不到的数据,在数据库中也没有取到,这时可以将 key-value 对写为 key-null,这样可以防止攻击用户反复用同一个 id 暴力攻击;
    缓存击穿
    最好的办法就是设置热点数据永不过期,拿到刚才的比方里,那就是你买腾讯一个永久会员
    缓存雪崩
    缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
    如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-74-6537-1.html