后端系统缓存技术分析
缓存有很多种,如CPU 缓存、磁盘缓存、浏览器缓存等;本文主要针对后端系统的缓存,也就是将程序或系统经常要使用的对象存在内存中,以便在使用时可以快速调用,避免加载数据或者创建重复的实例,以达到减少系统开销,提高系统效率的目的。 为什么需要缓存? 我觉得操作系统里面讲高速缓存(CPU Cache)的一句话特别好: 为什么要使用CPU Cache? 因为CPU 和内存访问性能的差距非常大,为了弥补两者之间的性能差异,充分利用 CPU,现代 CPU 中引入了 高速缓存(CPU Cache)。 因为我们一般都会把数据存放在关系型数据库中,不管数据库的性能有多么好,受限于磁盘IO性能和远程网络的原因,一个简单的查询也要消耗毫秒级的时间,这样我们的 QPS 就会被数据库的性能所限制。 而内存的性能高于磁盘,也没有远程网络的花费。如果恰好这些数据的数据量不大,不经常变动,而且访问频繁。那么就非常适合引入缓存。 总结一下,缓存使用场景: 数据不常变更且查询比较频繁是最好的场景,如果查询量不够大或者数据变动太频繁,缓存使用的意义不大,甚至可能适得其反。 缓存的类型 常用的缓存可以分为内部缓存和外部缓存。 内部缓存是指存放在运行实例内部并使用实例内存的缓存,这种缓存可以使用代码直接访问。 外部缓存是指存放在运行实例外部的缓存,通常是通过网络获取,反序列化后进行访问。 一般来说对于不需要实例间同步的