美文网首页
缓存听起来不错,但这些情况下千万别使用缓存

缓存听起来不错,但这些情况下千万别使用缓存

作者: 朱潘 | 来源:发表于2018-11-11 17:42 被阅读0次

缓存对我们而言并不是一个陌生的词汇,使用缓存就是为了加快计算机读取数据的速度减小数据库的压力。但是,使用缓存也会牺牲一些其他方面的优势,比如牺牲了数据的强一致性。只要数据产生了副本,就一定会出现副本数据与原数据之间的差异,这就是一致性。因此,我们在使用缓存的时候就一定会失去一定的一致性,这是无法避免的。某些场景对数据的一致性要求并不是非常高,所以我们才使用缓存来换取更高的效率。

因此在评估一个系统技术解决方案是否需要使用缓存时,除了要评估使用缓存能否提高性能、能提升多少性能以外,还要看为了提高性能而牺牲的数据一致性能否让用户接受。举个例子:公司的财务系统要求实时查看各类财务信息,财务信息作为一个非常重要的数据来说,任何牺牲一致性的缓存都不应该存在。如果某位同事的工资已经发了,但是系统上面还现实未发,这将多么尴尬。使用缓存的终极目的是为了提高性能,但不能盲目。

适合使用缓存的场景有很多,在下面这些情况中使用缓存是非常明智的:

读密集型的应用;

存在热数据的应用;

对响应失效要求较高的应用;

对一致性要求不严格;

需要实现分布式锁的时候。

一个常见的例子:网站的首页需要查询到的数据通常都会使用缓存。一个原因是因为首页通常都需要非常快的响应速度,一旦响应速度慢了,用户流失将非常严重;另一个原因就是首页需要展示的数据一致性要求通常不高。基于这两点原因,我们完全可以使用缓存来达到我们的目的。

虽然使用缓存听起来很不错,甚至非常有逼格、有技术范了。但是,下面这些情况下千万不要使用缓存:

更新频繁,对于更新频率过高的数据,频繁同步缓存中的数据所花费的代价可能相当于从缓存中查询带来的好处。简而言之就是功过相抵,甚至还有更糟糕的情况,那就是功不抵过;

对一致性要求严格,比如上面举的例子,财务系统的财务数据,这就是个一致性要求严格的情况;

读少,对于读取非常少的系统而言,使用缓存就完全没有意义了,毕竟使用缓存的目的是为了读取数据更高效;

数据量很小的情况下,当然也没必要使用缓存了,因为数据库本身完全可以支持。

所以,在考虑采用某种技术解决方案的时候,不光要考虑它所带来的高性能,还要综合考虑其他的因素。比如成本,比如信息安全,比如用户可接受度等。

#### 欢迎关注我的公众号“java工会”,一起交流技术

相关文章

  • 缓存听起来不错,但这些情况下千万别使用缓存

    缓存对我们而言并不是一个陌生的词汇,使用缓存就是为了加快计算机读取数据的速度减小数据库的压力。但是,使用缓存也会牺...

  • 赫赫有名的双刃剑:缓存(下)

    缓存使用的问题 缓存穿透 (没起作用) 缓存穿透,指的是在某些情况下,大量对于同一个数据的访问,经过了缓存屏障,但...

  • 如何做一个电商系统(四)

    1.缓存逻辑实现 1.1.需求 我们知道使用缓存,可以提高查询效率,那什么情况下需要使用缓存呢?通常而言,使用缓存...

  • 电商项目(四)

    一、缓存 我们知道使用缓存,可以提高查询效率,那什么情况下需要使用缓存呢?通常而言,使用缓存需满足以下两个条件: ...

  • Okhttp3之缓存与CacheInterceptor

    一、缓存的流程 读取缓存 创建缓存策略 根据策略,在不使用网络的情况下没有缓存,返回504报错 HttpGatew...

  • 缓存篇--浏览器缓存

    为什么使用浏览器缓存 互联网应用系统,在高并发的情况下,都会使用缓存,例如:浏览器缓存,CDN缓存,Nginx反向...

  • ios webview 拦截404

    直接上代码 揣测:当webview加载的时候,会暂时缓存请求(如果没有特别指定千万别缓存的情况下),所以通过[NS...

  • PHP-文件缓存类

    文件缓存类 网上整理的php文件缓存类,测试使用不错,最后部署redis后弃用此方案,备份 使用文件缓存类 使用r...

  • 9.9数据库缓存

    为了减少IO开销,所以尽量使用内存缓存 不使用缓存的情况下。 json,解析,,序列化解析,,,这就会有开销。。。...

  • Apollo GraphQl Cache

    1.什么是缓存,缓存的利弊,如何使用缓存? 缓存,存在即为合理,是一种不错的数据请求解决方案,但是鱼和熊掌不可兼得...

网友评论

      本文标题:缓存听起来不错,但这些情况下千万别使用缓存

      本文链接:https://www.haomeiwen.com/subject/luxffqtx.html