
【架构师从入门到进阶】第七章缓存和存储的优化思路——第一节缓存概述本篇文章我们来学习分布式缓存这是属于我们应用服务器性能优化的一大块。当我们的网站遇到性能瓶颈时我们比较常用的一些解决方案中还有一个非常重要的就是使用缓存。缓存在现在的互联网项目中几乎无处不在。它既存在于浏览器中也可以存在于网关中也可以存在于负载均衡中也可以存在于应用服务器也可以存在于数据库当中。也就是说几乎是方方面面都有缓存的身影。缓存既可以是对数据的缓存也可以是对文件的缓存也可以是对页面的缓存。合理的利用缓存对提升网站的性能意义重大。我们通过f12来看一下我们刚才所提到的浏览器的缓存。大家可以看到右侧的这些kv值都是浏览器记录的一些缓存。分布式缓存它是一种导流的的方式。是指将原本对复杂操作的请求引导到简单的操作上也就是说可以将查询较慢的数据引导到或者存储到较快的查询的介质中。我们刚才说f12看到的浏览器中的这个缓存它就是这个意思。比如说需要耗时很长的计算或者说耗时很长的查询我们可以把这种操作呢把它引导到对缓存的操作中。查数据库可能得耗时很久但是查缓存呢就会很快。这就是我们所说的导流。我们的缓存是一个用空间换时间的一个策略牺牲了存储空间它用来存储已经有的这么一些数据把一些数据提前存储到缓存当中在之后遇到同样的请求时能通过缓存及时返回就不需要去查询数据库。无需经过耗时的查询节省用户的响应时间单位时间内能处理的请求就越多增大了系统的吞吐量。此时所说的这种缓存是广义的缓存不要只把它理解成redismemcache、local cache、Guava的一些工具还有客户端的缓存服务端的缓存等等都是可以的。那么缓存的基本原理是将访问的数据存储在相对较高访问速度的存储介质中这是它的核心原理。将要访问的数据存储在有着相对较高访问速度的存储介质中以便于处理对应的数据时有较高的速度。这里可以指两方面一方面指缓存访问的速度比较快可以减少数据的查询速度我们去数据库查一个数据是硬盘的lO操作很慢的那么我们把它放到缓存里比如说redis那么内存的查询速度就会很快。第二如果说缓存的数据是经过复杂计算得到的比如说我们要统计一下全国有多少符合条件的用户。那么发起这个请求之后我们的程序就需要去后台统计一下把符合条件的用户统计出来然后再求一个和这种计算量是非常大的每次请求过来每查询一次耗时也非常久那么我们提前让它把这个数计算出来或者说在第一次请求查询的时候把它计算出来然后把它放到缓存里以后被类似的请求查询的时候它就不需要去经过计算或者不需要去数据库查询而是直接从缓存去查就可以了。这样的话就能减少系统的计算成本节省了资源的消耗还能提高用户的响应时间。