常见缓存问题

## 缓存穿透
缓存穿透是指缓存没有发挥作用,业务系统虽然去缓存查询数据,但缓存中没有数据,业务系统需要再次去存储系统查询数据。

解决方案:设置默认值

## 缓存雪崩
缓存雪崩是指当缓存失效(过期)后引起系统性能急剧下降的情况。

解决方案:

**更新锁**
对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新,未能获取更新锁的线程要么等待锁释放后重新读取缓存,要么就返回空值或者默认值。

**后台更新**
由后台线程来更新缓存,而不是由业务线程来更新缓存,缓存本身的有效期设置为永久,后台线程定时更新缓存。

内存不够时,缓存被“踢掉”造成读取空值的解决方案:

1. 后台定时更新缓存
2. 业务发送消息提醒后台更新缓存

## 缓存热点
对于一些特别热点的数据,如果大部分甚至所有的业务请求都命中同一份缓存数据,则这份数据所在的缓存服务器的压力也很大。

方案:复制多份缓存副本,将请求分散到多个缓存服务器上
展开
5