# 【付费】第18章:一级缓存

作者:小傅哥
博客:https://bugstack.cn (opens new window)
星球:https://t.zsxq.com/Ja27ujq (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

# 一、前言

为什么使用缓存?

在刚做研发的前几年,通常在程序中需要什么数据了,就直接从数据库查询,查询后开始执行业务流程。等下次再需要数据了,哪怕是同样的数据也会从数据库再次发起查询。

这样的操作方式在一些业务访问体量较小的系统中,其实并不会有什么问题,甚至不引入过多的组件,也会让程序更加易于维护。但随着系统我们逐步承接更大调用体量的系统后,每一个数据库的链接,每一次JDBC操作,都是非常宝贵的资源。

如果都是大量重复同样的请求,以及获得同样的数据,那么就可以使用缓存的方式预热数据,减轻数据库的压力,让系统可以承担更大的并发量。所以类似这样的场景,就需要使用缓存来进行优化。

# 二、目标

在数据库的一次会话中,有时候我们可能需要反复的执行完全相同查询语句。如果不采取一些优化的手段,那么每一次查询都会查询一次数据库,而在极短的会话周期内几乎反复查询出来的结果也是完全相同的。

与从内存获取相比,相同的数据再查询数据库的代价是很大的,如果系统的调用量较大,那么这可能造成很大的资源浪费。所以本章节结合着我们已经实现的 ORM 框架,在一个会话周期内添加缓存操作,当会话结束 commit/close/clear 时,则进行清空缓存。