当前位置:主页 > 查看内容

程序员误区,缓存一定能提升程序效率么?

发布时间:2021-05-28 00:00| 位朋友查看

简介:大家好,今天我们来简单的聊一聊缓存问题。什么是缓存呢?它在系统设计中是在一个怎么样的位置呢?假设在一个计算机应用里面,我们一般会把数据存放在数据库中,一般数据库的数据也是放在硬盘当中,硬盘的读写速度毕竟有限,当存在一些数据特别热的时候,例如1……

大家好,今天我们来简单的聊一聊缓存问题。什么是缓存呢?它在系统设计中是在一个怎么样的位置呢?假设在一个计算机应用里面,我们一般会把数据存放在数据库中,一般数据库的数据也是放在硬盘当中,硬盘的读写速度毕竟有限,当存在一些数据特别热的时候,例如12306,查询北京到广州有那些车次,这个数据经常被用户访问,所以我们可以把它存放在速度更快地内存上。

缓存的本质,是为了解决不同的存储介质的速度差异问题。是一个经典的空间换时间的解决方案。也就是说,使用缓存就是为了让系统更快。不过这也是需要有前提的,如果你的业务是读多写少,例如电商系统中的商品系统,商品的描述与商品的属性,都是非常典型的多读少写的场景。

一、那么缓存就一定是好东西么?缓存会不会带来一定的副作用。答案是肯定的。首先,缓存可能并不会让你的程序变得更快,相反,可能还会变得更慢。因为访问内存虽然说非常地快,但是多少也是要开销的,特别是当你的缓存不是本机而是分布式的时候,至少需要一个网络的RT。所以,如果你的缓存的命中率非常地低,那么,缓存的效果就会大打折扣,不仅没有加快程序的访问速度,还会让程序变得更慢。

二、其次,缓存可能会让你读到错误的数据,更官方一点的回答,就是数据的一致性会下降。造成这种数据的主要原因,就是缓存的操作无法保证100%成功。比方说,我们在维护一个电商系统,原本华为Mate30Pro售价为6999元,后来你决定开展一次促销活动,将价格变更为6699元,当你设置完新的价格之后,数据库已经更新了,但是缓存可能还是旧的,更要命的,如果你使用的是本机缓存,那么可能部分机器上更新成功,部分机器更新失败,导致用户可能进入不同页面的时候,看到不同的价格,从而引发用户投诉,所以,当我们使用缓存的时候,通常会设置一个过期时间,从而减少缓存失效带来的影响。

三、最后,缓存可能会带来运维上的麻烦,如果不使用缓存,当我们在页面或者APP上面看到数据错误,那么一般都是数据库的问题,但是引进了缓存之后,我们就需要增加一个工序去排查是否是缓存的问题,如果缓存是本机的,那么可能是部分机器存在问题,部分机器是好的,这就给我们排查增加了不少的难度,如果缓存是分布式的,同样也有可能存在不一致的问题,同时缓存机器的带宽、内存等等都需要不少的运维成本。

总体来说,缓存也是一把双刃剑,需要我们对业务场景进行甄别,合理地选择合适的缓存,才能够发挥出缓存的最大作用。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。


本文转载自网络,原文链接:https://www.toutiao.com/a6783670576780149259/
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:MySQL 优化:为什么 SQL 走索引还那么慢? 下一篇:没有了

推荐图文


随机推荐