缓存(了解)

本文介绍了缓存的概念,缓存的作用以及适合缓存的数据类型。详细讲解了MyBatis的一级缓存和二级缓存的工作原理、配置及自定义缓存,包括缓存的开启、失效情况和扩展配置。同时提到了缓存回收策略和序列化问题在实际应用中的重要性。
摘要由CSDN通过智能技术生成

1、简介

 

(1)什么是缓存【cache】

  • 存在内存中的临时数据
  • 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题
  • 查询:连接数据库,耗资源!
  • 一次查询的结果,给他暂存一个可以直接取到的地方!---> 内存:缓存
  • 我们再次查询数据的时候,直接走缓存,就不用走数据库了

(2)为什么使用缓存

  • 减少和数据库的交互次数,减少系统开销,提高系统效率

(3)什么样的数据能使用缓存

  • 经常查询并且不经常改变的数据

2、mybatis缓存

  • mybatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提高查询效率。
  • mybatis系统中默认定义了两级缓存:一级缓存二级缓存

        (1)默认情况下,只有一级缓存开启。(sqlsession级别的缓存,也称为本地缓存)

        (2)二级缓存需要手动开启和配置,它是基于namespace级别的缓存。

        (3)为了提高扩展性,mybatis定义了缓存接口cache。我们可以通过实现cache接口来自定义二级缓存。

3、一级缓存

       一级缓存也叫本次缓存 sqlSession

        (1)与数据库同一次会话期间查询到的数据会放到本次缓存中。

        (2)以后如果需要获取相同的数据,直接从缓存中拿,没必须再去查询数据库

 

1、开启日志

2、测试再一个session中查询两次相同的记录

import com.gt.dao.UserMapper;
import com.gt.pojo.User;
import com.gt.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;


public class MyTest {
    @Test
    public void test() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        SqlSession sqlSession2 = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.queryUserById(1);
        System.out.println(user);
        sqlSession.close();
        System.out.println("==================");

        UserMapper mapper2 = sqlSession2.getMapper(UserMapper.class);
        User user2 = mapper2.queryUserById(1);
        System.out.println(user2);

        System.out.println(user==user2);
        sqlSession2.close();



//        mapper.updateUser(new User(2,"aaaaa","bbbb"));
//        sqlSession.clearCache();//手动清理缓存

//        System.out.println("=============================");
//        User user2 = mapper.queryUserById(1);
//        System.out.println(user2);

//        System.out.println(user == user2);



    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值