SSM整合Redis并解决所遇到的问题

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

猜你喜欢

转载自blog.csdn.net/LYQ2332826438/article/details/83316823