redis 缓存引发的头疼问题
缓存穿透
某个key缓存没有,数据库也没有。一般这种情况发生了用户恶意请求或者攻击。造成一直不停查库
解决方案
最顶层拦截,不合理的id直接打回去或者布隆过滤器
db如果差不多,设置个null进Redis,这样下次就不会打到db,但是要注意合理的过期时间。
缓存雪崩
大批量不同的key同一时间到期,造成缓存失效,请求压到数据库。
解决方案
没有很好的办法,设置key的时候注意错开过期时间,有些热点数据甚至可以设置不过期
缓存击穿
某个key缓存过期,但是数据库有。正好这个点请求并发超高,还没来的及写缓存都压到了数据库上。
解决方案
加锁!第一个请求来时,如果发现为空,加锁住让后面的请求等待一下,参考多线程单例模式
分布式缓存的效率问题
分布式缓存需要经过网络传输,既然有网络,必然会有性能损耗,
作者:沐雪
文章均系作者原创或翻译,如有错误不妥之处,欢迎各位批评指正。本文版权归作者和博客园共有,如需转载恳请注明。
如果您觉得阅读这篇博客让你有所收获,请点击右下方【推荐】
为之网-热爱软件编程 http://www.weizhi.cc/