Redis缓存雪崩、缓存穿透与缓存击穿
缓存雪崩
指同一时间大量的缓存失效,导致这些大量请求都直接访问数据库。如果数据库压力过大,可能导致数据宕机。
解决办法:
1.对批量存入的redis的数据设置随机失效时间。如:电商首页的大量数据都是从缓存中取的。
缓存穿透
指缓存和数据库中都没有的数据,导致用户不断的查询数据库和缓存。如果数据库压力过大,可能导致数据库宕机。
解决办法:
1.对key进行条件过滤或使用布隆过滤器。
2.在网关层限制某一时间区间内相同IP的调用次数,防止恶意用户不断的更换参数请求服务器。
3.从缓存中没有取到的数据,在数据库中也没有取到,可以将对应key的value设置为null存在redis中,防止攻击用户用同一个id暴力攻击。
缓存击穿
指某一时间某个热点数据失效,导致这个时间点大量并发请求直接请求数据库。如果数据库压力过大,可能导致数据库宕机。
解决办法:
1.对热点数据库设置永远不过期或获取热点数据的方法上加互斥锁。
探索不以困难而止,学习不以艰苦而终