缓存

缓存是用来解决数据库性能瓶颈问题的
数据库一般用来采用分布式集群,读写分离、分库分表等在数据库性能极限的时候完成扩容,这种扩容不只是存储空间上的扩容,更是处理性能上的优化

怎么说呢,就像线程池差不多的概念,我们是通过网络和数据库建立连接通道的,而这个通道数是有限制,这是制约单体数据库性能比较重要的原因

但不管在怎么集群化处理,数据库的性能终究有限,在一定的场景下我们需要引入“缓存”这一角色来帮我们完成一些非必须的任务来分担压力

缓存,一般基于内存,读写效率更高,更适合频繁读写和修改的场景,但现在的缓存中间件也一般提供有持久化的能力,最常用的缓存中间件就是Redis,Redis虽快单单机的Redis也有它的极限,所以同样也有分布式缓存,其中值得一提的是Redis具备数据持久化的能力

就像计算机的操作系统设计一样,越底层的存储越快甚至套了很多层娃
缓存的设计和实际应用架构上也是如此,这就是多级缓存的概念,对应(浏览器缓存、系统本地缓存、cdn缓存)、反向代理Nginx的缓存、服务器缓存、Redis缓存......
总之做到每一层都有缓存减少每一层的等待响应时间,让最终抵达数据库的请求大幅减少

对此,还有一些缓存相关的常见现象和问题:

  • 缓存穿透
  • 缓存击穿
  • 缓存雪崩
  • ...
    思考:
  • 缓存预热
    • ....

为了更好的了解和体会缓存的好处,来看一些缓存的实际应用