一、客户端缓存

传统互联网:页面和浏览器缓存

1、页面缓存:

①逻辑:页面自身对某些元素或全部元素进行存储,并保存成文件。

②html:Cookie、WebStorage(SessionStorage和LocalStorage)、WebSql、indexDB、Application Cache等

②浏览器缓存:强制缓存和协商缓存

Ⅰ、强制缓存:直接使用浏览器的缓存数据(有个前提条件:Cache-Control的max-age没有过期或者Expires的缓存时间没有过期)

Ⅱ、协商缓存:服务器资源未修改,使用浏览器的缓存(304),要不然使用服务器资源

移动互联网:App缓存

把数据缓存在内存、文件或本地数据库(SQLite)中。比如图片文件

三、网络端缓存

通过代理的方式响应客户端请求,对重复的请求返回缓存中的数据资源

①web代理缓存:nginx(想必大家都知道)

②边缘缓存:CDN(具体概念就不做概述啦)

四、服务端缓存

1、数据库级缓存:

数据库是用来存储和管理数据的。
②实现原理:MySQL在Server层使用查询缓存机制。将查询后的数据缓存起来。
K-V结构,Key:select语句的hash值,Value:查询结果
InnoDB存储引擎中的buffer-pool用于缓存InnoDB索引及数据块

2、平台级缓存

①概念:平台级缓存指的是带有缓存特性的应用框架。

②市面上流行的工具:GuavaCache 、EHCache(二级缓存,硬盘)、OSCache(页面缓存)等。这些都是部署在应用服务器上的,也称为服务器本地缓存或本地缓存。

  • 优势:和应用程序在同一个进程,访问快,没有网络开销,一般情况下不会出现崩溃等相关问题
  • 缺点:容量小,每个JVM有一份,有数据冗余

3、应用级缓存(最常见)

①缓存中间件:具有缓存功能的中间件:Redis、Memcached、EVCache(AWS)、Tair(阿里 、美团)等。采用K-V形式存储。利用集群支持高可用、高性能、高并发、高扩展。分布式缓存codis

  • 优势:空间优势,在应用中共享(session共享),高可用(主从),高拓展(分区),集群
  • 缺点:资源、网络开销、数据一致性等问题

对分布式缓存做一个对比,因为在互联网开发中比较常见

GuavaCache

Tair

EVCache

Aerospike

类别

本地缓存

分布式缓存

分布式缓存

分布式NoSQL数据库

应用

高并发下的本地缓存

阿里、美团

Netflix、AWS

国外比较常用

性能


较高

很高

较高

持久化





集群