1.什么是缓存穿透?
缓存穿透其实是指从缓存中没有查到数据,而不得不从后端系统(比如数据库)中查询的情况。
2.缓存穿透的解决方案
一般来说有两种解决方案:回种空值以及使用布隆过滤器。
1.回种空值:当我们从数据库中查询到空值或者发生异常时,我们可以向缓存中回种一个空值。但是因为空值并不是准确的业务数据,并且会占用缓存的空间,所以我们会给这个空值加一个比较短的过期时间,让空值在短时间之内能够快速过期淘汰。
需要注意的是,系统中有大量获取未注册用户信息的请求,缓存内就会有有大量的空值缓存,也就会浪费缓存的存储空间,如果缓存空间被占满了,还会剔除掉一些已经被缓存的用户信息反而会造成缓存命中率的下降,所以使用的时候应该评估一下缓存容量是否能够支撑。
本文参考【极客时间】专栏《高并发系统设计40问》。
网友评论