
【架构师从入门到进阶】第七章缓存和存储的优化思路——第二节缓存收益本篇文章我们开始学缓存的收益。学缓存收益目的是什么呢是为了让我们做好缓存数据的选择哪些数据做缓存以及如何去做缓存。我们常说的缓存是指读缓存所以大家用缓存的时候大部分时间是指的读缓存当然也有写缓存只不过写缓存用的比较少。读缓存在调用方和数据提供方之间它用来缓存数据提供方提供的数据。我们的调用方最开始的时候是向数据提供方发请求数据提供方把数据给了调用方有了缓存之后缓存的目的之一就是为了让我们减少我们对数据提供方的请求对数据提供方的访问。我们来考虑一下它能给我们带来什么好处增加什么成本。这里的好处和成本我们可以用时间作为衡量的维度毕竟我们增加缓存的目的是为了减少系统的响应时间更快的给用户提供服务。首先我们的调用方要去缓存里面查数据得知道查哪个缓存缓存得有一个唯一的标识。增加缓存后根据这个请求我们得算出来对应的key是什么还要去根据key去查value查出value之后将value转换成我们所需要的数据比如说我们的value里面json格式的字符串但是我们需要的是一个对象那么我们就需要将其转换成我们需要的那个对象还有缓存不命中时的时间就是1减去P命中率乘以查询数据库的时间。前面的三个T是所有命中的缓存花费的时间后面是没有命中的缓存查询需要的时间。那么时间出来了引入缓存会增加缓存写的操作增加整个系统的复杂度带来开发维护上的挑战。因此只有当引入缓存之后这个查询时间能大大的节省下来也就是远远小于没有缓存时花费的时间这个引入才是有意义的。实际上前面三个都没有一个指标重要没有P重要最重要的是P缓存中最重要的是命中率。从场景出发看什么场景可以提高命中率什么场景就适合用缓存。第一读多写少的场景。因为缓存的存在能加快读操作但是会给写操作带来额外的工作读多写少的场景就更能让缓存扬长避短因为写缓存少读缓存多所以说这种场景是应用缓存的一种场景。第二原查询时间特别长的场景。也就说这个时间本来就已经很长很长了长到这个请求都忍受不了了。那么引入缓存后能够节约的时间也就越多。