面试-缓存相关知识点
一、为什么要用缓存?
在项目中,如果不用缓存,则每次查询,都要用到数据库。这对数据库的压力很大,容易导致数据库宕机。
二、如何使用缓存?
首先我想先谈一下Mybatis一级和二级缓存,避免错误依赖Mybatis的缓存。因为在项目中,我们基本上不用Mybatis的缓存。
原因如下:
一级缓存:在同一个连接中,如果查询到相同的数据,Mybatis不会再从数据库中查询,而是从缓存查询。这种场景在实际项目中,非常少,同时也是自动启用的,所以开发时不需要干涉。
二级缓存:前提:已手工启用二级缓存,同时数据未修改。在不同的连接中,如果查询到相同的数据,Mybatis会先检查如果二级缓存中有数据(这叫缓存命中),则不再从数据库中查询。
注意,Mybatis缓存用的是JVM内存,结构是HashMap。
但是现在java后端通常是分布式系统,会有很多JVM同时在工作,另外JVM内存也很宝贵,所以在实际项目,通常用Redis集群来做缓存数据库。在查询数据之前,先从Redis中取,没有再从数据库中取;当数据修改时,会先删除缓存再更新数据;如果并发量特别大,则会先更新数据库,再修改缓存,即不同的场景,会采用不同的缓存同步策略。
三、缓存同步策略,谈谈你的理解,或者:你在项目中用到哪些缓存策略?
四、在项目中,缓存失效有几种场景,你的解决方法是什么?
本文来自博客园,作者:xiaoyongdata(微信号:xiaoyongdata),转载请注明原文链接:https://www.cnblogs.com/xiaoyongdata/p/16645788.html