学分高考 web前端

缓存如何分类?有什么区别?

发布时间: 2022-05-17 21:21:01

缓存如何分类?缓存分类按照系统划分为应用级缓存和系统级别缓存;按照设计分本地缓存、分布式缓存、多级缓存。在技术界“缓存为王”,从浏览器到应用前端、应用后端、数据库,每一层都能通过缓存来提高系统的扩展能力,改善系统的响应能力同时减少系统的负担。

一、按照系统划分

1、应用级缓存

应用级缓存是我们平时写的应用程序中所使用的缓存。在平时程序中一般是按照如下操作流程来实现缓存的操作,首先张三用户读取数据库,并将读取的数据存入到缓存中,其他用户读取的时直接从缓存中读取,而不用查询数据库,从而提高程序的执行速度和效率。

应用级缓存

2、系统级别缓存

系统级别缓存是抛开我们应用程序之外硬件的缓存操作,例如某些CPU的缓存操作和如下图多级缓存流程类似, CPU在操作数据的时候,先读取1级缓存,1级缓存如果没有数据则读取2级缓存,2级缓存没有数据则读取3级缓 存,3级缓存如果没有数据就直接从主存储器(存储指令和数据)读取数据;

系统级别缓存

二、按照设计分

(1)本地缓存

直接运行在应用程序本地的缓存组件, 比如 JVM 中的 Map 数据结构,可以作为最简单的数据缓存:

classLocalCache {
privatestaticMap<String,Object>cache =newHashMap<>();
privateLocalCache(){}
publicstaticvoidput(Stringkey,Objectvalue){cache.put(key,value);}
publicstaticObjectget(Stringkey){returncache.get(key);}
}

如果你的应用程序只需要运行在一台服务器上,并且多个应用程序之间不需要共享缓存的数据(比如用户 token),可以直接采用本地缓存,访问缓存时不需要通过网络传输,非常地方便迅速。

但是本地缓存会和你的应用程序强耦合,应用程序停止,本地缓存也就停止了,而且如果是在分布式场景下,多个机器都要使用缓存,此时如果在每个服务器上单独维护一份本地缓存,不仅无法共享数据,而且非常浪费内存(因为每台机器可能缓存了相同的数据)。

本地缓存停止

(2)分布式缓存

分布式缓存是指独立的缓存服务,不和任何一个具体的应用耦合,可以独立运行并搭建缓存集群。类似数据库,所有的应用程序都可以连接同一个缓存服务以获取相同的缓存数据。

分布式缓存

除了数据共享外,分布式缓存的优点还有很多,比如不需要每台机器单独维护缓存、可以集中管理缓存和整体管控分析、便于扩展和容错等,但是应用必须要通过网络访问分布式缓存服务,会产生额外的网络开销成本。并且每台机器都有可能会对整个分布式缓存服务产生影响,而一旦分布式缓存挂了,所有的应用都可能出现瘫痪(缓存雪崩)。

(3)多级缓存

上述两种缓存没有绝对的优劣,要根据实际的业务场景进行选型。其实还可以将本地缓存与分布式缓存相结合,形成多级缓存服务,架构如下:

多级缓存

当首次查询时不存在缓存会同时将数据写入本地缓存和分布式缓存,之后的查询优先查询分布式缓存,而如果分布式缓存宕机,则从本地缓存获取数据,通过多级缓存机制,能够起到兜底的作用,即使缓存挂掉,也能支撑应用运行一段时间。

温馨提示:
本文【缓存如何分类?有什么区别?】由作者教培参考提供。该文观点仅代表作者本人,学分高考系信息发布平台,仅提供信息存储空间服务,若存在侵权问题,请及时联系管理员或作者进行删除。
我们采用的作品包括内容和图片部分来源于网络用户投稿,我们不确定投稿用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的权利,请联系我站将及时删除。
内容侵权、违法和不良信息举报
Copyright @ 2024 学分高考 All Rights Reserved 版权所有. 湘ICP备17021685号