Advertisement

为什么要用缓存?缓存使用不当会造成什么后果?

阅读量:

问题

项目中缓存的工作原理是什么?为何采用缓存机制?这将导致哪些负面影响?

分析

这个话题是每个互联网公司的关注重点。如果一个人对缓存概念不太熟悉,则会面临诸多困扰或挑战。

通常情况下,在讨论项目时最先提出的疑问必然是关于缓存的应用场景及原因。不仅是一个主要关注点,更是开发者必须考虑的关键要素之一——为什么要采用缓存?是否有必要使用缓存呢?使用后可能会遇到哪些潜在的问题?

这就是审视一下你对缓存机制的本质是否有所了解?如果你仅仅是机械地应用缓存而不加考虑其运行原理与应用场景的选择与优化……那么这必然会对你的职业形象造成负面影响

剖析

项目中缓存是如何使用的?

这个,需要结合自己项目的业务来。

为什么要用缓存?

用缓存,主要有两个用途:高性能、高并发。

高性能

在这样一个场景下:当你接收到一个请求时(或:当你处理一个请求时),你必须对mysql数据库进行一系列繁琐的操作流程(或:你不得不进行一系列费力不讨好的操作)。经过大约一整天的时间(或:耗费大约6个小时时间)后才查询到结果(或:最终查询到结果),该结果在接下来的几小时内可能会维持不变(或:该结果可能会持续一段时间)。然而,在结果发生变动的情况下(或:当结果发生变动时),也无需立即反馈给用户(或:无需立即通知用户)。那么在这种情况下该如何处理呢?

缓存机制耗时600毫秒查取出结果后存储在缓存中,确保每个key对应唯一的一个value值,下次再有人查询时可以直接从缓存中被一个key查询到其对应的一个value值,仅需2毫秒即可完成处理.该系统的处理效率提升了300倍以上

简而言之,在涉及需要复杂操作且耗时查询的结果的情况下,并且这些结果在后续过程中基本保持稳定的同时伴随有大量的读取请求。我们可以将获取到的结果存储至缓存系统中,在后续的读取过程中直接从缓存中调用即可。

高并发

mysql的设计负担很重,并非特意为了高并发而构建。尽管MySQL确实支持高并发操作,在单机模式下达到2千TPS后就容易出现异常。

如果你有一个系统在高峰期每秒有1万次请求 MySQL单机处理可能会导致严重性能问题 此时你应该考虑采用缓存技术将大量数据从MySQL移出以减少对数据库的压力。缓存功能本质上是一种键值(key-value)操作机制 单机环境下可以轻松处理数千甚至上万次并发操作 支持高并发操作非常简单 单机系统的承载能力是MySQL单机处理能力的几十倍 因此采用缓存机制是解决这种高并发问题的理想选择

缓存是走内存的,内存天然就支撑高并发。

用了缓存之后会有什么不良后果?

常见的缓存问题有以下几个:

缓存与数据库双写不一致
缓存雪崩、缓存穿透、缓存击穿
缓存并发竞争

全部评论 (0)

还没有任何评论哟~