缓存雪崩#
缓存雪崩:缓存中数据大批量到过期时间,而查询数据直接打到数据库;
或者是缓存服务器宕机了,造成大量的查询打到数据库上。从而引起数据库压力过大甚至down机。
正常情况下的请求,示意图
当时缓存雪崩,示意图
压力会集中在数据库上。
解决方案#
针对缓存大批量的过期,是由于缓存设置了相同的过期时间了。解决的方案缓存设置为不同的超时时间。
例如在原有的超时时间的基础上增加一个1~3分钟的随机时间。即可避免这类问题。做二级缓存。A1为原始缓存,A2为拷贝缓存。只有在A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期
针对缓存服务器的高可用
万一所有的缓存都失效了,多个服务器进程访问统一个key的话,那就需要加锁了。这是最后的防线了。