当前位置:主页 > 资讯 > Redis--缓存穿透、缓存雪崩和缓存击穿--高级面试题
201909/05

Redis--缓存穿透、缓存雪崩和缓存击穿--高级面试题

admin 资讯 Comments 围观:
其他典型问题是缓存渗透,缓存雪崩和缓存故障。 
目前,业界也有一个比较流行的解决方案。 
本文不是为了更完美地解决这三个问题,也不是颠覆业内流行的解决方案。 
相反,从实际的代码操作,来演示这三个问题现象。 
之所以这样做是因为,只要看看这些问题的学术解释,就很难有一个非常生动的概念。通过实际的代码演示,您可以加深对这些问题的理解和理解。  
缓存渗透是指查询数据库不得存在的数据。 
缓存进程的正常使用大致是,数据查询首先缓存查询,如果密钥不存在或密钥已过期,则查询数据库,并将查询对象放入缓存中。 
如果数据库查询对象为空,则不会将其放入缓存中。  
 Redis  - 缓存渗透,缓存雪崩和缓存崩溃 - 高级访谈问题
代码流  
在对象主键ID中传递的参数 
根据键 
从缓存中获取对象如果对象不为空,则直接返回 
如果对象为空,则执行数据库查询 
如果从数据库查询的对象不为空,则将缓存设置到期时间 
想象一下这种情况,如果传入的参数是-1怎么办? 
这个-1是一个不能存在的对象。 
每次去查询数据库时,每次查询为空时,每次都不会缓存。 
如果存在恶意攻击,您可以使用此漏洞对数据库施加压力,甚至粉碎数据库。 
即使使用UUID,也很容易找到一个不存在和攻击的KEY。  
在工作中,小编将使用缓冲空值的方法,这是[代码流程]中的第五步。如果从数据库查询的对象为空,则它也将被放入缓存中,但是例如,设置的缓存到期时间更短。 
设置为60秒。  
 Redis  - 缓存渗透,缓存雪崩和缓存崩溃 - 高级访谈问题  
缓存雪崩意味着缓存集在某个时间到期。  
雪崩的原因之一,例如,在写这篇文章时,它很快就会达到12点钟,很快就会出现一波购买,这波商品更集中到缓存中,假设一小时缓存
。 
然后在早上一点钟,商品的缓存过期了。 
这批货物的访问查询属于数据库,对于数据库,会出现周期性的压力峰值。  
当小编正在做电子商务项目时,通常采用不同类别的商品并缓存不同时期。 
同一类别中的项目,加上随机因素。 
这可以尽可能地分散缓存过期时间。此外,流行类别的热门项目被缓存较长时间,不受欢迎类别的缓存项目较短,这也节省了缓存服务的资源。  
 Redis  - 缓存渗透,缓存雪崩和缓存崩溃 - 高级访谈问题 
缓存时间添加到suijiyinzi 
事实上,集中到期并不是非常致命的。更致命的缓存雪崩是一个节点向下或与缓存服务器断开连接。 
由于自然形成的缓存雪崩,它必须在一定时间内创建缓存,然后数据库可以承受当时的压力,此时,数据库也能承受压力。 
没有什么只是数据库的周期性压力。 
缓存服务节点的停机时间,数据库服务器上的压力是不可预测的,很可能会立即压缩数据库。  
缓存故障
缓存故障意味着密钥非常热,并且不间断存在大的并发性。大并发集中于访问这一点。当密钥处于故障时,持久并发将磨损缓存并直接请求数据库。 
就像一个障碍洞。  
当小编正在做一个电子商务项目时,货物就爆炸了。  
 In事实上,在大多数情况下,这种爆炸很难对数据库服务器施加压力。 
没有多少公司达到这个水平。 
因此,小编的实用主义,主要产品都是早期准备的,这样缓存永不过期。 
即使某些商品被发酵成爆炸品,它也会直接设置为永不过期。  
 Avenue to Jane,互斥锁密钥互斥锁实际上无法使用。
在流行的问题面前必须有一个流行的解决方案,但有时候根据你的实际情况处理它也是合适的。 
大胆的设计,也许你的解决方案会受欢迎吗?
 

文章作者:admin
本文地址:
版权所有 © 未注明“转载”的博文一律为原创,转载时必须以链接形式注明作者和原始出处!
如果你觉得文章不错,您可以推荐给你的朋友哦!

发表评论:                              


验证码:点击我更换图片

来看看其他人说了些什么?-----------------------------------------------------------------> 进入详细评论页