springboot使用服务器redis登录验证

第一步 打开服务器redis

[root@VM-4-16-centos ~]# cd /usr/local
[root@VM-4-16-centos local]# ./redis-5.0.2/src/redis-server ./redis.conf &

第二步 redis管理工具连接

 第三步 在springboot中加入jedis和commonpool2的依赖

 <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.6.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.4.2</version>
        </dependency>

第四步 创建jedis工具类

public class RedisUtil {
    /**
     *  创建一个jedis的线程池
     */
    public static JedisPool jedisPool;

    public static JedisPool open(String host, int port){
        if(jedisPool == null){
            //设置线程池的参数
            JedisPoolConfig config = new JedisPoolConfig();
            //设置最大线程数量
            config.setMaxTotal(100);
            //设置空闲数
            config.setMaxIdle(2);
            //设置检查项为true,避免为null的情况
            config.setTestOnBorrow(true);
            //创建JedisPool
            jedisPool = new JedisPool(config,host,port,6000,"root");
        }
        return jedisPool;
    }
    /**
     * 关闭线程池
     */
    public static JedisPool close(){
        if(jedisPool != null){
            jedisPool.close();
        }
        return jedisPool;
    }
}

第五步 在业务层引用redis

@Service
public class LoginServiceImpl extends ServiceImpl<LoginMapper, LoginDO> implements LoginService {
    @Autowired
    private LoginMapper loginMapper;

    @Override
    public ResultVo loginVerification(LoginDO loginDO) {
        //定义一个公共返回类
        ResultVo resultVo = new ResultVo<LoginDO>();
        //将前端传的值先从redis中查找,没有值就在redis中创建
        String host = "服务器地址";
        int port = 6379;
        Jedis jedis = null;
        JedisPool pool = null;
        try {
            pool = RedisUtil.open(host,port);
            jedis = pool.getResource();
            if(jedis.get(loginDO.getUsernumber().toString()) != null){
                if(jedis.get(loginDO.getUsernumber().toString()).equals(loginDO.getPassword())){
                    resultVo.setCode(1);
                    resultVo.setData(jedis.get(loginDO.getUsernumber().toString()));
                    System.out.println("使用了redis登录成功");
                }else {
                    resultVo.setCode(-2);
                    System.out.println("使用了redis登录失败");
                }
            }else{
                //前端传递的值在是实现类验证
                QueryWrapper<LoginDO> loginQueryWrapper = new QueryWrapper<>();
                loginQueryWrapper.eq("usernumber",loginDO.getUsernumber());
                LoginDO loginVerify = this.loginMapper.selectOne(loginQueryWrapper);
                //loginVerify为空表示数据空中无数据, -1代表无数据
                if(loginVerify == null){
                    resultVo.setCode(-1);
                }else{
                    //判断传入的密码是否匹配 , -2代表密码错误
                    if(!loginVerify.getPassword().equals(loginDO.getPassword())){
                        resultVo.setCode(-2);
                    }else{
                        resultVo.setCode(1);
                        resultVo.setData(loginVerify);
                    }
                }
                //在redis创建学生信息
                jedis.set(loginDO.getUsernumber().toString(),loginDO.getPassword());
            }
        }finally {

        }
        return resultVo;
    }

在前端登陆验证

看看后端控制台输出

redis使用完毕 


版权声明:本文为qq_44372953原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。