在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
缓存如何分类?缓存分类按照系统划分为应用级缓存和系统级别缓存;按照设计分本地缓存、分布式缓存、多级缓存。在技术界“缓存为王”,从浏览器到应用前端、应用后端、数据库,每一层都能通过缓存来提高系统的扩展能力,改善系统的响应能力同时减少系统的负担。
一、按照系统划分
1、应用级缓存
应用级缓存是我们平时写的应用程序中所使用的缓存。在平时程序中一般是按照如下操作流程来实现缓存的操作,首先张三用户读取数据库,并将读取的数据存入到缓存中,其他用户读取的时直接从缓存中读取,而不用查询数据库,从而提高程序的执行速度和效率。
2、系统级别缓存
系统级别缓存是抛开我们应用程序之外硬件的缓存操作,例如某些CPU的缓存操作和如下图多级缓存流程类似, CPU在操作数据的时候,先读取1级缓存,1级缓存如果没有数据则读取2级缓存,2级缓存没有数据则读取3级缓 存,3级缓存如果没有数据就直接从主存储器(存储指令和数据)读取数据;
二、按照设计分
(1)本地缓存
直接运行在应用程序本地的缓存组件, 比如 JVM 中的 Map 数据结构,可以作为最简单的数据缓存:
class LocalCache {
private static Map<String, Object> cache = new HashMap<>();
private LocalCache() {}
public static void put(String key, Object value) { cache.put(key, value); }
public static Object get(String key) { return cache.get(key); }
}
如果你的应用程序只需要运行在一台服务器上,并且多个应用程序之间不需要共享缓存的数据(比如用户 token),可以直接采用本地缓存,访问缓存时不需要通过网络传输,非常地方便迅速。
但是本地缓存会和你的应用程序强耦合,应用程序停止,本地缓存也就停止了,而且如果是在分布式场景下,多个机器都要使用缓存,此时如果在每个服务器上单独维护一份本地缓存,不仅无法共享数据,而且非常浪费内存(因为每台机器可能缓存了相同的数据)。
(2)分布式缓存
分布式缓存是指独立的缓存服务,不和任何一个具体的应用耦合,可以独立运行并搭建缓存集群。类似数据库,所有的应用程序都可以连接同一个缓存服务以获取相同的缓存数据。
除了数据共享外,分布式缓存的优点还有很多,比如不需要每台机器单独维护缓存、可以集中管理缓存和整体管控分析、便于扩展和容错等,但是应用必须要通过网络访问分布式缓存服务,会产生额外的网络开销成本。并且每台机器都有可能会对整个分布式缓存服务产生影响,而一旦分布式缓存挂了,所有的应用都可能出现瘫痪(缓存雪崩)。
(3)多级缓存
上述两种缓存没有绝对的优劣,要根据实际的业务场景进行选型。其实还可以将本地缓存与分布式缓存相结合,形成多级缓存服务,架构如下:
当首次查询时不存在缓存会同时将数据写入本地缓存和分布式缓存,之后的查询优先查询分布式缓存,而如果分布式缓存宕机,则从本地缓存获取数据,通过多级缓存机制,能够起到兜底的作用,即使缓存挂掉,也能支撑应用运行一段时间。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
大数据面试题 Hadoop的联邦机制
大数据学习需要掌握很多技术知识点,包括Linux、Zookeeper、Hadoop、Redis、HDFS、MapReduce、Hive、lmpala、Hue、Oozie、Storm、Kafka、Spark、Scala、SparkSQL、Hbase、Flink、机器学习等。今天主要和大家分享一下Hadoop的联邦机制。
10138
2019-07-18 23:40:42
数据分析师好找工作吗?薪资待遇怎么样?
数据分析师好找工作吗?回答无疑是肯定的。数据分析师一职在当下所谓的就业寒潮中,可以说是一路激流勇进。那么数据分析师的薪资待遇究竟怎么样呢?根据各大招聘网站整理的数据,我们可以看见,各知名互联网大厂都几乎开出了30K-70K的年薪,来吸引数据分析人才,但是岗位却仍然供不应求。
7519
2019-12-24 14:32:35
影响大数据与分析的因素有哪些?
数据分析在数据库内进行索引和分析,并且企业拥有确保数据可以移至正确位置的工具。借助现代商业智能技术使答案更接近于业务用户。寻找、清查和综合分布广泛且多样化的数据资产。算法将有助于分析系统对数据进行指纹识别、发现异常和洞察,并提出应与之一起分析的新数据。
8107
2020-02-14 16:32:23
大数据开发和软件开发哪个前景好?
大数据开发学习有难度,零基础入门要先学习Java语言打基础,然后进入大数据技术体系的学习,学习Hadoop、Spark、Storm等知识。软件开发工程师根据不同的学科从事的岗位也千差万别。
5787
2020-10-15 09:41:45
入行大数据学习路线分享 学习不迷路
入行大数据学习路线分享 学习不迷路,想要从事大数据技术开发工作请问要怎么做,学习路线是什么?从哪里开始学?学哪些?对于想学大数据的人群有诸多的疑问,大数据本质上是海量数据。以往的数据开发,需要一定的Java基础和工作经验,门槛高入门难。如果零基础入门数据开发行业的小伙伴可以从Python语言入手。
2701
2022-02-18 11:06:17
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
扫描二维码,了解更多信息
