一、缓存
缓存是计算机中一个很经典的概念,核心思路是把一些常用的数据放到访问速度更快的地方,方便随时读取;
但对于计算机硬件来说,往往访问速度越快的设备,成本越高,存储空间越小,缓存是更快,但空间上是不足的,因此大部分时候,缓存只存放一些热点数据;
二、Redis 用作缓存
在一个网站中,我们经常会使用关系型数据库来存储数据(例如 MySQL),虽然关系型数据库功能强大,但是性能不高(进行一次查询操作消耗的系统资源较多),性能不高的原因体现为:
- 数据库把数据存储在硬盘上,硬盘的 IO 速度并不快,尤其是随机访问;
- 如果查询没有命中索引,就需要进行表的遍历,大大增加硬盘 IO 次数;
- 关系型数据库对于 SQL 的执行会做一系列的解析,校验,优化工作;
- 如果是一些复杂查询,如联合查询,需要进行笛卡尔积操作,效率更是降低很多;
因此,如果访问数据库的并发量比较高,就很容易使数据库服务器宕机;服务器每处理一次请求,都要消耗一定的硬件资源的(CPU,内存,硬盘,网络带宽等),当一个服务器的硬件资源被耗尽的时候,后续的请求没有资源可用,就无法处理请求,甚至导致服务器代码出现崩溃;
让数据库能够承担更大的并发量的措施主要有以下两个思路
- 开源:引入更多的机器,部署更多的数据库实例ÿ