11数据库成为瓶颈后,动态数据的查询要如何加速

192 阅读2分钟

1.什么是缓存

缓存:一种存储数据的组件,让数据请求更快的返回(缓存可以放在内存中,但是缓存!=内存)

目的:协调两者数据传输差异的结构

image.png

内存读写速度远大于磁盘读写速度

1.1缓存的案例

  • MMU内存管理,将虚拟地址转换成物理地址
    • 通过TLB的组件缓存最近转换过的地址映射,将复杂运算结果缓存
  • 抖音
    • 不会一个个的视频打开
    • 同时打开几个视频,并缓存在播放器中
  • HTTP
    • 第一次请求静态资源时,会获取Etag的头部
    • 浏览器缓存图片+tag
    • 下一次请求时,会通过If-None-Match请求服务器,如果没有改变服务器返回304状态码
    • 浏览器就会继续沿用缓存图片

image.png

2.缓存与缓冲

缓存:提升高低速设备的访问速度,减少高低速设备的访问问题

缓冲区:临时存储数据的区域,数据会被纯属到其他设备(异步的,解决不同设备的处理问题)(类似消息队列)

例如:在内存中设置一块缓冲区,当缓冲区写满再刷入磁盘

image.png

3.缓存分类

  • 静态缓存
    • 通过缓存文件,避免直接请求数据库内容
    • 将每篇文章渲染成静态页面,放置在前端服务器上,优先访问静态页面(执行一定的清理策略)
  • 分布式缓存
    • 通过分布式方案突破单机限制
    • 本地也可以部署缓存,例如hashmap(由于请求服务器不同,可能导致数据不一致,没有命中缓存)
  • 热点本地缓存

4.缓存的不足

缓存的主要作用:提升访问速度,抵抗更大的并发

缓存的不足

  • 缓存受限于读多写少的业务场景,数据带有一定的热点属性

    • 读少写多的场景不适合
  • 缓存会给整体系统带来复杂度,数据不一致的风险

    • 较短的过期时间和手动清理的方式解决
  • 缓存介质内存并不是无限的

    • 设置过期时间
  • 缓存给运维带来一定的成本

5.总结

  • 缓存可以用很多层
    • 静态缓存
    • 分布式缓存
    • 本地缓存
    • 越下层越脆弱
  • 缓存是一种思想
    • 任何能加速读速度的手段都称为缓存