可见,在软件系统中缓存几乎无处不在!
一:提高用户体验
二:提升系统性能(响应时间、延迟时间、吞吐量、并发用户数和资源利用率等..)这几个方面。
通过缓存机制来减少数据库连接资源的竞争和对数据库读的压力,那么就可以选择采用静态页面缓存,这样程序上可以不做修改,就能很好的减少对web服务器的压力以及减少对数据库连接资源的竞争。
一:客户端缓存:对于互联网通常来说的是BS架构应用,可以分为页面缓存和浏览器缓存;对于移动互联网来说,指的是APP自身所使用的缓存。
页面缓存、浏览器缓存、APP上的缓存
二:网络中的缓存:位于客户端和服务端之间,对重复的请求返回缓存中的数据资源。同时接受服务端的请求,更新缓存中的内容。
web代理缓存(Squid):支持建立复杂的缓存层级结构,拥有详细的日志,高性能缓存,支持多种插件。 边缘缓存(nginx):向用户提供静态内容。CDN
三:服务端缓存:整个缓存的重头戏
数据库缓存:Mysql使用了查询缓冲机制,将select语句和查询结果放在缓冲区中,以后对同样的SQL语句,将直接从缓冲区中读取结果,节省查询时间,提高SQL查询的效率。 平台级缓存:EHCache,配置简单,结构清晰,功能强大 应用级缓存:通过代码实现缓存机制,Redis
整体来看,这是一个使用了多级缓存的系统。Nginx应用服务器的本地缓存解决了热点数据的缓存问题。Redis分布式缓存集群减少了访问回溯率,Tomcat应用集群使用的平台级缓存防止了缓存失效、缓存雪崩之后的冲击,数据库缓存提升数据库查询时的效率。
参考书籍:深入分布式缓存从原理到实战