立夏五月T网推出云主机超值团购活动,团购更优惠,高配机型高折扣价格。24*7的人工服务,本月购买续费
同样享受优惠。欢迎前来咨询。
T网五月团购季特价云主机:
2核 2G 120G 硬盘内存 带宽2M 现价50/2月 原价89元/月
2核 4G 120G 硬盘内存 带宽2M 现价100/2月 原价288元/月
2月起租 限量一百台
活动期间购买后期续费同样享受优惠。
招收代理,更高优惠。详情联系我。
联系人:邓毅
QQ:177679883
微信:18567558660
联系电话:18567558660
地址:郑州市金水区居易摩根中心2506
缓存穿透是指查询一个一定不存在的数据,由于这个数据不存在,所以永久不会被缓存,所以每次恳求都会去恳求数据库。
例如咱们恳求一个 UserID 为 -1 的用户数据,由于该用户不存在,所以该恳求每次都会去读取数据库。在这种状况下,假如某些心怀不轨的人运用这个存在的漏洞去伪造许多的恳求,那么很可能导致DB承受不了那么大的流量就挂掉了。
关于缓存穿透,有几种处理方案,一种是事前防止,一种是过后防止。
事前防止。其实就是对一切恳求都进行参数校验,把绝大多数不合法的恳求抵挡在最外层。在咱们举的这个比如中,那么就是做参数校验,关于 UserID 小于 0 的恳求全部回绝。但即便咱们做了全面的参数校验,仍是可能存在漏网之鱼,会呈现一些咱们没想到的状况。
例如咱们的 UserID 是递加的,那么假如有人恳求一个 UserID 很大的用户信息(例如:1000000),而咱们的 UserID 最大也就 10000。这个时分,你不可能限制 UserID 大于 1 万的就是不合法的,或者说大于 10 万就是不合法的,所以该用户ID必定能够经过参数校验。但该用户的确不存在,所以每次恳求都会去恳求数据库。
其实上面仅仅我所能想到的一种状况,咱们没想到的状况必定还有许多。关于这些状况,咱们能做的就是时分防止。
过后防止。过后防止说的就是当查询到一个空的成果时,咱们依然将这个空的成果进行缓存,可是设置一个很短的过期时刻(例如一分钟)。在这里咱们能够看到,其实咱们并没有彻底防止不合法恳求,只不过是将不合法恳求的危险让承受能力更强的redis去承当,让承受能力稍弱的数据库更安全。
经过上面这两种处理方式,咱们根本能够处理缓存穿透的问题。事前防止处理80%的不合法恳求,剩余的20%不合法恳求则运用Redis搬运危险。