在项目编写过程中经常为了查询业务速度快,而添加缓存。
缓存的原理基本上就是将经常查询,但是不经常修改的数据,放入到缓存中。
目前市面上的存储设施基本分为两种:内存和硬盘,内存速度快,但价格昂贵,硬盘便宜但速度相对慢。
所以我们所提到的经常查询的速度放入缓存,其实就是放入到内存中,基于内存实现的基本有Map集合以及redis
而数据库,文件系统都是基于硬盘的,所以就比较慢。
分清楚这个之后我们来看一个场景。
比如购物网站一般都会有一个分类导航,一般都是三级的。在数据库中存储。
但购物网站的导航栏,一般在网站首页出现,而首页又是一个网站访问最频发的页面,所以一般首页上的数据都会存储在缓存中。
那如果把分类数据放入到本地缓存--Map中,每次从Map中读取数据,如果数据有修改,可以改动Map数据,这样貌似解决了数据的缓存问题,并且提升了网站的响应速度。
但是:以上方案仅限于单体架构的网站,就是写好的代码只部署在一台服务器上,如果部署在多台服务器,使用Nginx进行负载均衡,意味着用户的缓存在每台电脑上都要重新查询数据库缓存到当前访问的服务器电脑上。
那么分布式缓存的概念就营运而生。