Jedis的使用?
Jedis就是redis提供的Java客户端工具(在Java代码中,直接通过jedis就可以操作redis数据库)
加载jedis依赖
连接redis服务器(创建jedis对象;相当于jdbc的connection、mybatis的sqlsession)
通过jedis对象中的方法完成redis的操作(jedis对象中的方法名和redis中的命令名是一样)
把jedis封装成工具类:获取jedis对象;关闭jedis对象
序列化:
把Java对象转换成字节数据/json串
通过commons-lang3提供的工具类/json解析工具
反序列化
把字节数组/json串转换为Java对象
redis作为缓存服务器
A:缓存
缓存就是一个内存区域
缓存:把sql语句执行之后的结果存储在内存中;如果发送同样的sql语句获取数据,就直接从缓存中获取数据,而不去操作数据库
缓存中不适应存储笔记重要的事务:比如财务
缓存:是为了提高检索效率
程序一旦执行了增删改操作,就会把缓存清空==》防止脏读
mybaitis中提供了缓存支持
一级缓存:sqlSession级别的缓存:用同一个sqlSession对象,执行多次相同的查询操作,第一次从数据库中获取数据,后面的多次从缓存中读取数据
一次缓存是默认开启的

二级缓存:sqlSessionFactory级别的缓存:用同一个sqlSessionFactory对象,获取到多个sqlSession,这多个sqlSession执行相同的查询操作,第一次从数据库中获取数据,后面的多次从缓存中获取数据
1):要使用二级缓存,需要开启
在mapper文件中指定要使用二级缓存

2):sqlSession必须关闭掉,数据才会被缓存下拉

3):一旦执行了增删改操作,缓存会被清空(flush)

4):redis实现缓存
mybatis默认是用缓存类PerpetualCache作缓存处理

mybatis支持自定义缓存:可以写一个像PertualCache一样的类,作为mybatis的缓存类;在自定义缓存类中,操作redis完成缓存的处理
为什么要使用redis作为mybatis的缓存工具?
1):redis可以做到持久化
2):redis支持集群环境:可以搭建专门的缓存服务器集群
步骤:
1):写一个缓存类,需要实现mybatis提供的缓存接口Cache
2):实现里面的方法
对比着PerpetualCache完成:把PerpetualCache放入到map中的数据,用redis完成

3):把自定义的缓存类应用到映射文件中:
