一 概述
缓存架构的存在使得客户端访问服务端时的速度得到很大的改进,因为当客户端向服务端发送请求的时候,先向缓存层发送请求,如果请求的数据存在于缓存中,则直接将其返回。如果缓存中没有对应的数据就会实现缓存穿透,去存储层查询,当在存储层查询到数据后会回写到缓存层,以便下次可以在缓存层查询相同信息,同时返回给客户端。当存储器无法响应客户端发送的请求的时候,会触发熔断机制,即客户端访问服务端时,无论是否有数据都会直接返回,保证服务的可用性。
二 常见的缓存架构图
三 常见的缓存方案
在实际看法的过程中,Memcache和Redis是两种常用的缓存中间件。但是它们各有自己的特点给和适用的场景。
- Memcache代码层类似于哈希结构,支持简单的key-value结构的数据,不支持数据的持久化(即断电或重启后数据消失),不支持主从同步机制,也不支持分片操作(将较大数据分散保存在多个物理结点的方案)。当服务器宕机后,数据无法保存在缓存中。对于简单的key-value操作可以使用Memcache,内存的使用率会更高一点。
- Redis支持的数据类型比较丰富,支持磁盘持久化,支持类似于MySQL的主从同步,同时在3.0版本后支持分片。