技术标签: RedisCache mybatis mybatis-redis redis.properties
redis与ehcache都是专业的缓存框架,redis与mybatis的整合方式与ehcache类似,不同的是,redis需要先搭建自己的redis服务,用来存放缓存数据。
这里主要演示mybatis与redis的整合过程,redis服务的搭建可以参考 Java连接redis简单demo示例,这里使用本地的Windows环境的redis服务,与mybatis进行整合。
1、添加redis依赖
<!-- 增加mybatis-redis依赖,这里只有beta版本 -->
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-redis</artifactId>
<version>1.0.0-beta2</version>
</dependency>
2、配置redis
我们使用本地的redis服务,在mybatis工程中,src/main/resources目录下增加redis.properties文件
host=localhost
port=6379
connectionTimeout=5000
soTimeout=5000
password=123456
database=0
clientName=
上面是redis-cache项目提供的可以配置的参数,有服务器地址、端口、超时时间等。
3、UserMapper.xml配置
redis-cache提供了一个mybatis的缓存实现类,org.mybatis.caches.redis.RedisCache
修改UserMapper.xml为
<mapper namespace="cn.mybatis.xml.mapper.UserMapper">
<!-- redis配置项 -->
<cache type="org.mybatis.caches.redis.RedisCache" />
...
这里使用偷懒的方式,所有的redis配置均使用默认项
测试过程
1、启动redis服务
去C盘redis目录,启动redis服务
C:\Users\PC>cd C:\redis-64.3.0.503
C:\redis-64.3.0.503>redis-server.exe redis.windows.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.503 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 1080
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[1080] 02 Jan 20:20:48.612 # Server started, Redis version 3.0.503
[1080] 02 Jan 20:20:48.632 * DB loaded from disk: 0.015 seconds
[1080] 02 Jan 20:20:48.636 * The server is now ready to accept connections on port 6379
2、进行Junit测试
可以看到日志
Cache Hit Ratio [cn.mybatis.xml.mapper.UserMapper]: 0.0
Opening JDBC Connection
Created connection 626742236.
Setting autocommit to false on JDBC Connection [[email protected]]
==> Preparing: select id,user_name,user_password,user_email,user_info,head_img,create_time from sys_user where id = ?
==> Parameters: 1001(Long)
<== Columns: id, user_name, user_password, user_email, user_info, head_img, create_time
<== Row: 1001, test, 123456, [email protected], <<BLOB>>, <<BLOB>>, 2017-04-01 12:00:01.0
<== Total: 1
test
Resetting autocommit to true on JDBC Connection [[email protected]]
Closing JDBC Connection [[email protected]]
Returned connection 626742236 to pool.
Cache Hit Ratio [cn.mybatis.xml.mapper.UserMapper]: 0.5
test
证明,第二次查询时走的是redis缓存,没有查询数据库。
我们再次执行Junit测试语句,再次执行时,依然会重新连接数据库,获取session,执行结果
Cache Hit Ratio [cn.mybatis.xml.mapper.UserMapper]: 1.0
test
Cache Hit Ratio [cn.mybatis.xml.mapper.UserMapper]: 1.0
test
第二次的执行结果证明,将redis作为缓存服务器,它缓存的数据与数据和程序的启动无关,redis的缓存并不会因为应用的关闭而失效。所以,第二次执行测试语句时,所有的查询都是走的redis缓存,没有走数据库。
再打开一个cmd窗口,登录到redis后台,查看缓存对象,可以看到redis服务中有UserMapper对象
C:\Users\PC>cd c:\redis-64.3.0.503
c:\redis-64.3.0.503>redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
127.0.0.1:6379> keys *
1) "cn.mybatis.xml.mapper.UserMapper"
127.0.0.1:6379>
证明,缓存是成功的。
以上,mybatis与redisz整合的简单demo,纯属学习使用,供大家参考。
附:项目代码路径 mybatis与redis整合示例
SpringMVC多拦截器执行顺序
实验目的与任务 目的:熟悉UML的使用,熟悉工厂方法模式、抽象工厂模式。 任务:按照实验内容要求,完成使用UML和java实现实验内容。 预习内容 复习课程的内容,熟悉工厂方法模式、抽象工厂模式的使用。 实验内容及要求 使用工厂模式: 现有电脑产品,windows和apple,请试用工厂模式描述该场景,要求绘...
1.正向索引正向索引(正排索引):正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。“文档1”的ID > 单词1:出现次数,出现位置列表;单词2:出现次数,出现位置列表;…………。“文档2”的ID > 此文档出现的关键词列表。正排表结构如图1所示,这种组织方法在建立索引的时候结构比较简单,建立比较方...
C语言 结构体联合体与枚举类型for(i=0;i<39;i++) { k=i; for(j=i+1;j<40;j++) if(stu[k].score”来访问结构体成员,一般形式为: 结构体指针变量->成员名 例如: pstu->num=6001; 例11.4 编一程序,利用结构体指针处理结构体中的成员。 struct s...
最近在搞摄像头识别颜色并追踪,有了那么一点点成过,记录一下防止以后忘了!先上两张成果图:有点模糊,凑合看。 大神地址:https://www.amobbs.com/thread-5499408-1-1.html?_dsign=85056954简单记录一下算法实现原理:摄像头输出的数据给屏显示,用屏幕的读点函数读出像素点,将读出的像素点解析成RGB格式...
掌握英语文章结构分析技巧对提高文章的理解和欣赏水平是极其重要的。下面是学习啦小编带来的中英文混合打字文章,欢迎阅读!中英文混合打字文章精选And now you are mine现在,你是我的And now you are mine.现在,你是我的Rest with your dream in my dream.在我的梦境中沉沉入梦Love and pain and work should all...
虚拟化抽象:进程进程的非正式定义非常简单:进程就是运行中的程序操作系统如何提供几乎有无数个CPU可用的假象?操作系统通过虚拟化CPU来提供这种假象通过让一个进程只允许一个时间片,然后切换到其他进程,操作系统提供了存在多个虚拟CPU的假象。这就是时分共享CPU技术,允许用户如愿允许多个并发过程要实现CPU的虚拟化,操作系统就需要一些低级机制以及一些高级智能。我们将低级机制称为机制。机制是一些低级方法或协议,实现了所需的功能时分共享是操作系统共享资源所使用的最基本的技术之一。通过允许资源由一个实
NSFileManager(文件管理器),对文件本身的的操作,创建文件、删除文件、移动、拷贝和遍历以及对目录操作等方面,需注意它并没有打开一个文件去修改里面的内容。NSFileHandle(文件句柄),是对文件内容的操作,文件句柄打开一个文件会自动生成;之后,这个文件句柄就成了文件的代表,对文件句柄的操作就是对文件操作。-----NSFileManager的操作------// 创建一个单...
Termux-configAbout/关于Termux是一个Android下一个高级的终端模拟器,开源且不需要root,支持apt管理软件包,十分方便安装软件包,完美支持Python,PHP,Ruby,Go,Nodejs,MySQL等。随着智能设备的普及和性能的不断提升,如今的手机、平板等的硬件标准已达到了初级桌面计算机的硬件标准,用心去打造完全可以把手机变成一个强大的工具.Installatio...
android 谷歌地图Hello Unity developers! 您好Unity开发人员! I have some big news to share with you this week: today, we’re showing two new branches of our technology to the world at Google’s annual developer c...
Vue修改表格中的数据这里是将vue与element-ui组件结合使用,在使用之前,得准备好vue与element-ui的安装环境,详情安装操作请参考博客https://blog.csdn.net/weixin_43913219/article/details/1042960201.首先在<template>标签中写好修改数据的模板。这里用到了element-ui的Dialog对话...