
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,学习软件开发的人数也越来越多了,而今天我们就通过案例分析来了解一下,软件开发缓存常见问题都有哪些。
1、缓存穿透
指访问不存在的数据,从而绕过缓存,直接请求到了数据源,当请求过多,就会对DB造成压力。
空key:指对于不存在的数据也将key存空值入缓存系统,这样下次访问也会得到返回。但只适用于空数据key有限、key重复请求概率高,如果量大且不重复,就会造成很多无用key的创建。
布隆过滤器:布隆过滤器是一个很长的二进制向量和一系列随机映射函数。可用于检索一个元素是否在一个集合中加一层对空值的过滤器,空间和时间效率都很高。但由于hash产生的碰撞可能存在误判,以及因不存储key导致的无法删除。适用于空数据key各不同、重复请求概率低。
2、缓存击穿
缓存击穿实际是缓存雪崩的一个特例。指当某些热点key过期时,就会有大量的请求击穿到DB。
互斥锁:在缓存失效的时候,不立即loaddb,可以先用如SETNX等命令去set一个mutexkey,当操作返回成功时,说明拿到锁,此刻该线程进行loaddb的操作并更新缓存;否则未拿到锁就(可休眠一段)重试get缓存的方法。但要注意死锁风险。
3、缓存更新与一致性
如果保证数据一致性。列出四种更新策略:
CacheAside:常用的。失效时回源取数据,更新;命中时,返回缓存数据;更新时先数据源更新,再更新缓存。
WriteBack:更新数据时,只更新缓存,不更新数据源。缓存异步批量更新数据库。
4、缓存降级
指当访问量剧增、服务出现问题或非核心服务影响到核心流程的性能时,仍需保证主服务可用。可根据一些关键数据自动降级,也可配置开关人工降级。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。