前言
缓存在计算机的世界中是一个非常宽泛的概念,因为处处是缓存的身影。操作系统可能缓存DNS的解析结果,浏览器可能缓存页面静态元素,用户访问的资源可能缓存在CDN中, CPU可能会缓存操作数所属的内存块,数据库的查询结果也可能是缓存好的。总之不管是在系统架构中的哪一层级,都有缓存的实现。所以,抛开具体应用谈缓存是没有意义的,那样过于空泛,但可以肯定的是,所有的缓存都是利用了数据的冗余提高性能,空间换时间,计算机的世界充斥着trade off。
本博文基于项目中的实际应用整理而来,仅讨论在DB和业务代码之间的缓存服务,主要分析笔者经历的项目中,根据不同的业务,采用了哪些更新策略(注,不讨论缓存的替换策略,如LRU等)。