缓存穿透
缓存和数据库都没有的数据,eg.订单号-1。量大时会导致数据库压力过大。
解决办法:
- 增加合法性校验。
- 使用布隆过滤器,可以判断出有没有。
- 缓存异常结果
缓存击穿在缓存失效时被请求,如果量大,会导致数据库压力过大
解决办法:
- 热点数据永不过期
- 数据为空时,加互斥锁,只允许一个请求击穿,击穿完缓存就有了(这个锁应该设成有限次自旋)
缓存雪崩【缓存穿透、击穿、雪崩】大量数据同时过期,请求量大会导致数据库压力过大
解决办法:
- 热点数据永不过期
- 过期时间加随机值
- 热点数据分散到不同分片,避免宕机引起雪崩
- 两层缓存
推荐阅读
- java 缓存架构剖析--本地缓存(LoadingCache)
- android|android 获取本地缓存文件大小,删除功能
- html|各大浏览器清除缓存(cache)详细步骤
- XML|将 Xml 文章通过对象的形式保存到 缓存中
- html|html页面清除缓存