目录
缓存是⼀个高速数据交换的存储器,使用它可以快速的访问和操作数据。
1.CPU缓存:CPU缓存是位于CPU和内存之间的临时存储器,它的容量通常远小于内存,但它的访问速度更快。CPU缓存的主要目的是减少CPU从内存中获取数据的次数,从而提高计算机的性能。
2.Web浏览器缓存:Web浏览器缓存是指在计算机的硬盘上存储的网页数据副本,当用户再次访问相同的网页时,如果该网页的数据已经在缓存中,那么浏览器可以直接从缓存中读取数据,而不需要重新从网络上下载。
3.分布式缓存:分布式缓存是一种将数据缓存在多个服务器上,以提供更快的数据访问速度的技术。这种技术广泛应用于大型网络应用,如电子商务网站、社交网络和在线游戏等。
4.Redis:Redis是一种开源的键值对数据库,它通常被用作内存数据库,可以非常快速地存储和检索数据。Redis广泛应用于各种应用程序中,包括Web应用、实时消息系统、实时大数据分析等。
当我们去超市购物时,我们可能会购买很多不同的商品。但是,我们不可能每次购买新商品时都去收银台付款。因此,超市的购物车起到了缓存的作用,允许我们在购物过程中暂时存储商品,直到我们准备好去付款。购物车的容量是有限的,类似于缓存的大小,而超市的货架则是内存,我们需要从货架上取出商品并放入购物车中,这类似于从内存中获取数据并存储到缓存中。当我们准备离开超市时,我们将购物车中的商品结账付款,这类似于将缓存中的数据写入磁盘或永久存储。
对于程序来说,当没有使用缓存时,程序的调用流程是这样的:
但随着业务的发展,公司的框架慢慢变成了多个程序调用一个数据库的情况了:
这是多部分公司的普遍的架构流程图,因此当公司业务发展到⼀定规模之后,最可能出现性能瓶颈的地方就是数据库。 数据库的资源同时也是程序中最昂贵的资源,因此为了防⽌数据库被过度的浪费,我们就需要给它雇⼀个“助理”了,这个助理就是缓存系统。加⼊缓存后,程序的交互流程如下图所示:
这样改造之后,所有的程序不会直接调用数据库,⽽是会先调用缓存,当缓存中有数据时会直接返回,当缓存中没有数据时才去查询数据库,这样就大大的降低了数据库的压力,并加速了程序的响应速度。
相比于数据库而言,缓存的操作性能更高,缓存性能高的主要原因有以下几个:
1. 缓存⼀般都是 key-value 查询数据的,因为不像数据库⼀样还有查询的条件等因素,所以查询的性能⼀般会比数据库高;
2. 缓存的数据是存储在内存中的,而数据库的数据是存储在磁盘中的,因为内存的操作性能远远大于磁盘,因此缓存的查询效率会高很多;
3. 缓存更容易做分布式部署(将⼀台服务器变成多台相连的服务器集群),而数据库⼀般比较难实现分布式部署,因此缓存的负载和性能更容易平行扩展和增加。