程序设计过程中的多级缓存

2023-10-28 14:18 栏目: 技术学堂 查看()

    提到缓存是每一个程序开发人员都绕不过去的一个话题,合理的使用缓存能够减少对数据的频繁IO,能够减少系统的压力从而增加系统的稳定性

    假设应用程序将原始数据存储在 MySQL 数据库中。众所周知 MySQL 数据库会将数据存储在硬盘以防止掉电丢失,但是受制于硬盘的物理设计,即便是目前性能最好的企业级 SSD 硬盘,也比内存的这种高速设备 IO 层面差一个数量级,而互联网应用,大都是典型的 “读多写少” 的场景,因此我们需要在设计上进行数据的读写分离,在数据写入时直接落盘处理,而占比超过 90% 的数据读取操作时则从以 Redis 为代表的内存 NoSQL 数据库提取数据,利用内存的高吞吐瞬间完成数据提取,这里 Redis 的作用就是我们常说的缓存。

    从系统设计层面来说缓存一般分为客户端缓存、应用层缓存和服务端缓存三类

    客户端缓存:

        浏览器端或者APP端缓存,此类缓存可以把不经常更换的资源存储在客户端,下次用户打开时不需要经过网络直接访问客户本地的已缓存资源

    应用层缓存:

        CDN服务

            CDN 全称是 Content Delivery Network,即内容分发网络,是互联网静态资源分发的主要技术手段。

        NGNIX服务缓存

            设置proxy_cache_path 

    服务端缓存:

        实际上就是存在内存中  

        例如 Hibernate、Mybatis 框架的一二级缓存、Spring MVC 的页面缓存都是进程内缓存的经典应用场景,这些进程内缓存在 Java 中也有着非常多优秀的开源实现,如 EhCache、Caffeine 都是代表性产品。

        

扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流