【架构师从入门到进阶】第七章:缓存和存储的优化思路——第一节:缓存概述

【架构师从入门到进阶】第七章:缓存和存储的优化思路------第一节:缓存概述

本篇文章我们来学习分布式缓存,这是属于我们应用服务器性能优化的一大块。

当我们的网站遇到性能瓶颈时,我们比较常用的一些解决方案中,还有一个非常重要的就是使用缓存。缓存在现在的互联网项目中,几乎无处不在。它既存在于浏览器中,也可以存在于网关中,也可以存在于负载均衡中,也可以存在于应用服务器,也可以存在于数据库当中。也就是说,几乎是方方面面都有缓存的身影。缓存既可以是对数据的缓存,也可以是对文件的缓存,也可以是对页面的缓存。合理的利用缓存对提升网站的性能意义重大。

我们通过f12,来看一下我们刚才所提到的浏览器的缓存。

大家可以看到,右侧的这些kv值,都是浏览器记录的一些缓存。

分布式缓存,它是一种导流的的方式。是指将原本对复杂操作的请求引导到简单的操作上,也就是说可以将查询较慢的数据引导到或者存储到较快的查询的介质中。

我们刚才说f12看到的浏览器中的这个缓存,它就是这个意思。比如说需要耗时很长的计算,或者说耗时很长的查询,我们可以把这种操作呢,把它引导到对缓存的操作中。查数据库可能得耗时很久,但是查缓存呢,就会很快。这就是我们所说的导流。

我们的缓存是一个用空间换时间的一个策略,牺牲了存储空间,它用来存储已经有的这么一些数据,把一些数据提前存储到缓存当中,在之后遇到同样的请求时,能通过缓存及时返回,就不需要去查询数据库。无需经过耗时的查询,节省用户的响应时间,单位时间内能处理的请求就越多,增大了系统的吞吐量。

此时所说的这种缓存,是广义的缓存,不要只把它理解成redis,memcache、local cache、Guava的一些工具,还有客户端的缓存,服务端的缓存等等都是可以的。

那么,缓存的基本原理,是将访问的数据存储在相对较高访问速度的存储介质中,这是它的核心原理。将要访问的数据存储在有着相对较高访问速度的存储介质中,以便于处理对应的数据时有较高的速度。

这里可以指两方面:

一方面指缓存访问的速度比较快,可以减少数据的查询速度,我们去数据库查一个数据是硬盘的lO操作很慢的,那么,我们把它放到缓存里比如说redis,那么内存的查询速度就会很快。

第二,如果说缓存的数据是经过复杂计算得到的,比如说我们要统计一下全国有多少符合条件的用户。那么发起这个请求之后,我们的程序就需要去后台统计一下,把符合条件的用户统计出来,然后再求一个和,这种计算量是非常大的,每次请求过来,每查询一次,耗时也非常久,那么我们提前让它把这个数计算出来,或者说在第一次请求查询的时候把它计算出来,然后把它放到缓存里,以后被类似的请求查询的时候,它就不需要去经过计算或者不需要去数据库查询,而是直接从缓存去查就可以了。这样的话,就能减少系统的计算成本,节省了资源的消耗,还能提高用户的响应时间。

相关推荐
无奈笑天下1 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
炫酷的大高个2 小时前
98% 连跑 20 次只剩 67%,我算了大模型重试账
人工智能·架构·开源
用户6602676118792 小时前
AI 代码上线前的第 24 道门禁:上线失败时,怎样在 10 分钟内退回?
后端·架构
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
humcomm3 小时前
设计与架构 · 01 sidecar 会消失吗:从 Istio ambient GA 到 AWS App Mesh 关停,一次服务网格数据面的重新洗牌
架构·istio·aws
AllData公司负责人3 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
Eyfcom4 小时前
〖物流低代码实战 01〗物流页面可视化搭建的底层架构:协议、引擎与产物的三重奏
低代码·架构·快递系统·物料体系·物流低代码实战
2601_967987374 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
隔窗听雨眠4 小时前
Oracle日志体系分层结构与故障定位路径
数据库·oracle·故障排查
为思念酝酿的痛4 小时前
C语言操作MySQL
数据库·mysql