缓存(cache) 这个概念,最早是出现在 计算机硬件设计 中。
比如 cpu cache,是用于减少处理器访问内存所需平均时间的部件。该部件的容量小于内存,但速度比内存高很多,接近处理器的频率。
如上图示,在 计算机硬件设计中
当处理器(cpu)发送内存访问请求时,先查看缓存中是否有请求数据,
如果存在(命中),则不访问内存直接返回该数据;
如果不存在(未命中),则先把内存中的数据存入缓存,再讲其返回处理器
由于缓存速度高于内存速度,因此能整体提高计算机的性能。
由于该设计思路的优秀,在 计算机软件设计中 中,就借鉴了该思路来提高系统性能,如下图示:
如上图示,整体思路跟硬件设计中是一样的。
内存的读写速度远大于磁盘的读写速度,将常用的数据缓存在内存中,提高访问速度,能提高服务的整体性能
在计算机软件系统的,内存的类型大概有以下几种类型:
1. 分布式缓存:当出现大流量、高并发时,数据库(db) 性能常常成为瓶颈,
这时常会引进分布式缓存来缓解 db 的压力。常见的有redis,memcached
2. 进程内缓存(本地缓存):由于分布式缓存会有网络开销,在对性能极高要求的场景下,
分布式缓存可能无法满足性能要求,于是就有了 本地缓存。
本地缓存的有点是少了网络开销,节省了内网宽带,有更低的响应延迟,能满足更高业务性能的需求。
缺点是多个应用之间无法共享缓存,且难以保持进程内缓存的一致性
3. 语言级的缓存:有的动态语言会有语言级的缓存,如php
4. cdn缓存,http缓存,web浏览器缓存
网友评论