缓存雪崩详解:
情景一:在没有缓存服务器的情况下,用户发起请求时,服务器直接向数据库请求数据,数据库直接返回数据给服务器。
情景二:当有redis缓存服务器时,用户发起请求时,服务器会先对redis请求数据,redis中存在则直接由redis返回数据给服务器,不存在则服务器向数据库请求数据,然后数据库进行返回,同时把数据给redis,让其进行缓存。
情景三:缓存雪崩,缓存雪崩的底层原理就是,缓存失效,所以此时服务器发起大量数据请求时,压力全部就在数据库身上。从而使得数据库瘫痪。
缓存雪崩发生的原因:在短时间内,大量的key同时过期,导致缓存失效,压力全到数据库上。
场景示例:某电商平台运营部计划发起一场秒杀活动,然后进行数据上线,然后set值,就是set有效时间的时候为同一个值,假设为一个小时,那么当一个小时后这些key将同时失效,这时,当有大量访问进来时,因为缓存已经过期,所以数据请求就直接交给数据库。
解决方案:可以给缓存设置过期时间时加上一个随机值时间,使得每个key的过期时间分布开来,不会集中在同一时刻失效。