SSM整合Redis
1.先搭建SSM框架
2.在pom.xml中引入redis依赖
<!--引入redis依赖-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
3.在spring的配置文件中配置redis
<!--配置redis-->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="${redis.host}"></constructor-arg>
<constructor-arg name="port" value="${redis.port}"></constructor-arg>
</bean>
4.创建redis缓存处理类RedisCache
package com.liuYongQi.SSM.redis;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import javax.annotation.Resource;
/**
* @ClassName: RedisCache
* @Description: TODO redis缓存处理类
* @Author: Administrator
* @CreateDate: 2018/10/20 22:54
* @UpdateUser: Administrator
* @UpdateDate: 2018/10/20 22:54
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Service("redisCache")
public class RedisCache {
@Resource
private JedisPool jedisPool;
/**
* @Author Administrator
* @Description //TODO 对redis数据库进行添加数据
* @Date 22:58 2018/10/20
* @Param [key, value]
* @return void
* @exception
*/
public void setDataToRedis(String key,String value){
System.out.println("数据添加到Redis中");
System.out.println("key:"+key);
Jedis jedis = jedisPool.getResource();
jedis.set(key,value);
}
/**
* @Author Administrator
* @Description //TODO 对redis数据库的数据进行查询
* @Date 23:00 2018/10/20
* @Param [key]
* @return java.lang.String
* @exception
*/
public String getDataFromRedis(String key){
System.out.println("对redis数据库的数据进行查询");
System.out.println("key:"+key);
Jedis jedis = jedisPool.getResource();
return jedis.get(key);
}
}
5.创建Contoller类
package com.liuYongQi.SSM.controller;
import com.alibaba.fastjson.JSON;
import com.liuYongQi.SSM.pojo.Users;
import com.liuYongQi.SSM.redis.RedisCache;
import com.liuYongQi.SSM.service.UsersService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @ClassName: UsersController
* @Description: TODO 用户处理类
* @Author: Administrator
* @CreateDate: 2018/10/19 23:17
* @UpdateUser: Administrator
* @UpdateDate: 2018/10/19 23:17
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Controller
public class UsersController {
private static Logger logger= LogManager.getLogger(UsersController.class);
@Resource
private UsersService usersService;
@Resource
private RedisCache redisCache;
/**
* @Author Administrator
* @Description //TODO redis缓存
* @Date 20:29 2018/10/23
* @Param [map]
* @return java.lang.String
* @exception
*/
@RequestMapping("/getAllUsers")
public String getAllUsers(Map map){
List<Users> usersList=null;
//先从redis中获取
String key="com.liuYongQi.SSM.dao.UsersDao.selectAllUsers";
String data = redisCache.getDataFromRedis(key);
if(data==null){
//没有就查询数据库
usersList= usersService.selectAllUsers();
//先把集合对象转换成json
String string = JSON.toJSONString(usersList);
//把查询的结果放入到redis中
redisCache.setDataToRedis(key,string);
}else{
//将data转换成对象集合
usersList=JSON.parseArray(data,Users.class);
}
map.put("usersList",usersList);
return "success";
}
}
6.创建jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2018/10/19
Time: 23:16
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<a href="/getAllUsers.do">测试redis</a>
</body>
</html>
7.测试
8.问题
若出现
解决方法:
在redis客户端输入:config set protected-mode "no"或者关闭防火墙
如果你出现了redispool连接池的错误,那可能是你6379的端口没放开,
firewall-cmd --zone=public --add-port=6379/tcp –permanent
这样就成功的将8081端口加入了public区域中,permanent参数表示永久生效,即重启也不会失效,最后不要忘记更新防火墙规则:
firewall-cmd –reload
OK,下面看一下public区域下所有已打开的端口,命令如下:
firewall-cmd --zone=public --list-ports
开端口的地址:https://blog.csdn.net/wlwlwlwl015/article/details/51210347
今天的测试就到这里了,谢谢大家的支持!
如果大家想浏览我的下一篇文章,请留言
版权声明:此文章属于原创,不准随意转载:https://blog.csdn.net/LYQ2332826438