版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sugar_map/article/details/80867669
本文的核心内容:使用Redis作为MyBatis的二级缓存、使用Redis作为Session会话服务器统一管理管理Session。
一:使用Redis作为MyBatis的二级缓存
实战:
准备条件:SSM框架开发环境 【Spring版本4.3.14】
导入核心Jar:
Maven坐标如下
<!--Redis Jar-->
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<!-- Mybatis与Redis 集成Jar -->
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-redis</artifactId>
<version>1.0.0-beta2</version>
</dependency>
1:引入redis.proterties配置文件
host=192.168.58.128
port=6379
扫描二维码关注公众号,回复:
2926253 查看本文章
2:Spring-Context.xml
<!--引入局部配置文件-->
<context:property-placeholder location="classpath:/jdbc.properties"/>
<!--配置数据源-->
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${name}"/>
<property name="password" value="${pwd}"/>
</bean>
<!--配置SessionFactory-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds"/>
<property name="typeAliasesPackage" value="com.redis.entity"/>
<property name="mapperLocations">
<list>
<value>classpath:/com/redis/mapper/*Mapper.xml</value>
</list>
</property>
</bean>
<!--Mapper扫描仪 扫描注入Dao-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
<property name="basePackage" value="com.redis.dao"/>
</bean>
<!--配置事务-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="ds"/>
</bean>
<!--开启 事务注解扫描-->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!--注解扫描 排除Controller包-->
<context:component-scan base-package="com.redis">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
3:Mapper文件【省略entity实体类、Dao接口】
重点【开启缓存<cache type="org.mybatis.caches.redis.RedisCache"/>】
<mapper namespace="com.redis.dao.UserDao">
<!--开启自定义缓存RedisCache-->
<cache type="org.mybatis.caches.redis.RedisCache"/>
<insert id="addUser" parameterType="User">
insert into t_user values(#{id},#{name})
</insert>
<select id="selectUserById" resultType="User">
select * from t_user where id=#{id}
</select>
<update id="updateUser" parameterType="User">
update t_user set name=#{name} where id=#{id}
</update>
</mapper>
4:ServiceImpl【省略Service接口】
import com.redis.dao.UserDao;
import com.redis.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by Maps on 2018/6/27.
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Transactional(readOnly = true)
public User searchUser(Integer id) {
return userDao.selectUserById(id);
}
@Transactional()
public Integer addUser(User user) {
return userDao.addUser(user);
}
@Transactional()
public Integer modifyUser(User user) {
return userDao.updateUser(user);
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
5:Test
@Test
public void method(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:springContext.xml");
UserService userService = (UserService) ctx.getBean("userServiceImpl");
User user = userService.searchUser(1);
System.out.println(user);
}
第一次查询:redis数据库添加了一条UserDao信息
第二次查询: 没有看到MyBatis打印sql信息,CacheHitRatio 【说明命中缓存,即Redis作为MyBatis的二级缓存生效】
二:使用Redis作为会话服务器,统一管理Session
实战:
准备条件:Linux操作系统中配置两台TomCat服务器,以端口号区分不同的TomCat实例。
1:将Jar包导入TomCat的lib目录【通过winSCP】
注意目前:Jar包目前支持到TomCat6-7。
2:配置TomCat的context.xml
【向每个TomCat的context.xml文件中加入下列内容】
修改host、por、database即可。
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="192.168.58.128" port="6379" database="0" maxInactiveInterval="6000"/>
3:验证配置
启动两台TomCat服务器 浏览器访问
查看redis是否存在JSessionId
Redis作为会话服务器搭建成功。