一本讲解各种缓存的书
正如书中所说的,”缓存“这个词需要依赖于具体的语境,这是因为缓存确实贯穿了计算机硬件层面和软件层面。
从硬件上来说,计算机的CPU里面有缓存:L1、L2甚至L3
从软件上来说就更广泛了,从C端到B端,就有着一系列非常多的缓存场景,常见的例如浏览器就有浏览器缓存,代理服务器也有一种称为缓存代理服务器,服务器上也有特定的缓存概念,例如关系型数据库服务器上的查询缓存、索引缓存;专用中间件例如Redis、Memcached等组件也是非常有名的缓存服务器。
这本书对缓存的基本概念做了一个全局性的简介,同时也提到了JSR中的JCache API规范,该规范对缓存的实现进行了许多约束并开放了简单易用的API。然而spring cahce自己的一套规范早于JSR,现在JSR 107也很少为人所知。
这本书对Java中常用的很多缓存组件都进行了介绍和讲解,包括对Ehcache、Guava Cache、Memcached、Redis、阿里的Tair、EVCache,以及平时很少听过的Aerospike的介绍,包括背景、架构设计、概念讲解、API简单使用、源码简单介绍等。基本上对各种组件和中间件都进行了介绍,虽然不能一一都细致讲解,但至少能够快速入门并掌握基本知识。
其中对Memcached和Redis的讲解对我来说是比较好的,因为这两种缓存中间件是平时开发中使用最多的。阅读完后相当于一个复习,同时也是对之前所掌握知识的查漏补缺。
书中的后面部分比较偏重方案理论,这一部分也是我认为比较好的地方,里面讲了社交场景、电商场景以及作者所在项目的缓存应用背景。这一部分非常有趣,提供了很多方案举例、易错点和性能点,读完之后能快速应用到自己的项目设计中去。
另外,书中也对缓存的使用提供了一些建议,例如不要盲目引入缓存避免无谓增加复杂性、缓存架构不合理等问题。
读完之后,可以对许多缓存组件和中间件的概念和API有所了解,对复杂业务场景的缓存使用有一定的参考,可以说内容没有违背书名。