缓存
缓存原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器
缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快;缓存的设置是所有现代计算机系统发挥高性能的重要因素之一
缓存用于加快数据访问速度,降低冗余传输,缓解带宽瓶颈和瞬间拥塞,减少距离时延。主要分为数据库缓存、服务器缓存、CDN缓存、浏览器缓存和Web应用层缓存。缓存缺点包括无清理机制和开发困扰。内存缓存淘汰机制有FIFO、LFU和LRU策略。
从数据库中查询出来的对象在使用完后不要销毁,而是存储在内存(缓存)中,
当再次需要获取该对象时,直接从内存(缓存)中直接获取,不再向数据库执行
select 语句,从而减少了对数据库的查询次数,因此提高了数据库的性能。
mybatis一级缓存
一级缓存作用于一个SqlSession,在SqlSession查询完成后会将数据写入缓存,简单理解为SqlSession内部有一个容器,放置这些数据,第二次就不会去数据库查找。
但是当SqlSession执行清空缓存命令,对数据库中的数据做出修改或者是销毁SqlSession对象时,缓存就会失效,下一次查询就会进入到数据库中查找。
mybatis二级缓存
二级缓存是SqlSessionFactory级别的(默认是关闭的),执行sql后就会将数据放入二级缓存,二级缓存不会因为SqlSession的清除缓存,对象销毁而失效。
开启二级缓存
在mybatis配置文件中开启
<setting name="cacheEnabled" value="true"/>
在使用的mapper中设置
<cache flushInterval="1"></cache>
另外可以设置策略,定时删除缓存,防止赃读
使用时所有的 POJO 类实现序列化接口 Java.io. Serializable。