Jedis之Java操作redis实现模拟验证码发送操作

2023-11-18

import cn.hutool.core.util.RandomUtil;
import redis.clients.jedis.Jedis;

import java.util.Scanner;

/**
 * @author oliverloki
 * @Description: TODO
 * @date 2022年06月26日 23:16
 */

public class 模拟验证码 {
    public static void main(String[] args) {

        System.out.println("请输入手机号来获取验证码");
        //生成验证码
        String phone = new Scanner(System.in).nextLine();
        verify(phone);
        //登录redis获取验证码
        Jedis jedis = new Jedis("43.138.51.80", 6379);
        jedis.auth("123456");
        String ver = jedis.get("Verifycode" + phone + "code");
        //发送验证码
        System.out.println("您的验证码是:"+ver);
        System.out.println("请输入验证码");
        //判断是否正确
        diff(phone,new Scanner(System.in).nextLine());

        jedis.close();

    }

    public static void diff(String phone,String code){
        //从redis获取验证码并比较
        Jedis jedis = new Jedis("43.138.51.80", 6379);
        jedis.auth("123456");
        //获取真实验证码
        String verifyKey= "Verifycode"+phone+"code";
        String s = jedis.get(verifyKey);
        //比较输入验证码
        if (s.equals(code)){
            System.out.println("成功");
        }else {
            System.out.println("失败");
        }
        jedis.close();
    }

    //每个手机每天发送三次,验证码放入redis
    public static void verify(String phone){
        //key
        String countKey = "Verifycode"+phone+"count";
        String verifyKey= "Verifycode"+phone+"code";

        Jedis jedis = new Jedis("43.138.51.80", 6379);
        jedis.auth("123456");
        String s = jedis.get(countKey);
        if (jedis.get(countKey)==null){
            jedis.setex(countKey,24*60*60,"1");
        }else if (Integer.parseInt(jedis.get(countKey)) <= 2){
            jedis.incr(countKey);
        }else {//已发送3次
            System.out.println("今天已发送三次,次数耗尽");
            jedis.close();
            return;
        }

        String verifyCode = verifyCode();
        jedis.setex(verifyKey,60,verifyCode);
        jedis.close();

    }
    //生成6位随机数字验证码
    public static String verifyCode(){
        StringBuilder code = new StringBuilder("");
        for (int i = 0; i < 6; i++) {
            code.append(RandomUtil.randomInt(10));
        }
        return code.toString();
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jedis之Java操作redis实现模拟验证码发送操作 的相关文章

随机推荐

  • Java线程安全问题原因及解决方案

    文章目录 一 出现线程安全问题的原因 二 如何解决 总结 一 出现线程安全问题的原因 出现线程安全问题的原因主要有五个方面 操作系统对线程的调度是随机的 抢占式 主要原因 多个线程修改同一个变量 修改操作不是原子的 内存可见性问题 指令重排
  • windows安装wget的方法

    wget是一个非常好用的下载利器 用法比较简单 wget可以递归且支持断点 安装方法 1 进入网址 GNU Wget 1 21 3 for Windows eternallybored org 下载适合的最新版的 exe文件 2 将下载好的
  • UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence

    在做文本词频统计的时候遇到的问题 弄了1个小时也没找到解决方法 在偶然的一次试一试 居然成功解决了这个问题 一般情况下是这样是可以直接没问题的 出现问题时 一般情况下解决方式 网上绝大部分 但是出现这种情况 此时我们输入encoding 1
  • 用proxyee-down快速下载百度网盘大文件

    百度网盘下载大文件一直是一个痛点 现在国内基本上只有百度网盘可用了 但是免费用户使用百度网盘下载东西的速度一直不是很理想 所以现在有很多工具应运而生 今天要介绍的就是一个使用java编写的开源多线程下载器 利用它 我们就可以满速下载百度云文
  • bzoj3309 DZY Loves Math

    题目描述 bz 题解 线性筛 瞎jb反演得到 ans sum limits T 1 a lfloor frac a T rfloor lfloor frac b T rfloor sum limits d T f d mu frac T d
  • Java应用程序浏览器集成控件JxBrowser v7.18新版发布!

    JxBrowser是将基于Chromium的浏览器与Java应用程序集成 以处理和显示HTML5 CSS3 JavaScript Flash等 近日 JxBrowser v7 18发布啦 在此版本中 支持带有 Apple Silicon M
  • 分解质因数、求因子数和因子和(唯一分解定理)

    唯一分解定理 又称算术基本定理 可以描述为 任意一个大于1的正整数都能表示成若干个质数的乘积 且表示的方法是唯一的 换句话说 一个数能被唯一地分解成质因数的乘积 公式 因子数
  • 难懂?这样理解SPI与CAN很简单!

    难懂 这样理解SPI与CAN很简单 什么是串行通讯 为什么仍需使用串行通讯 SPI与CAN SPI 接口特点 CAN现场总线特点 什么是串行通讯 在正式进入主题前 我么先来介绍一下什么叫做 串行通信 串行通信是计算机的一种数据传输通信方式
  • Base64 编码整理

    前面整理了websocket的知识 其中有一个base64编码的小知识 今天就对这个小知识进行一下整理 1 Base64 Base64是一种基于64个可打印字符来表示二进制数据的表示方法 因为只有64种字符 使用6位就可表示过来 所以bas
  • 学习设计模式的一点心得

    我 是一个刚开始学习设计模式的小学生 开始学习设计模式是因为在之前的一家公司 做一个rpg游戏 但是我们又是小公司 没办法 很多都要我这个新手来做 连一些模块的架构都要做 但是能力在那里 工作越做越乱 对于一个没接触过设计模式的人来说 根本
  • Kafka剖析(一):Kafka背景及架构介绍

    转载自 http www infoq com cn articles kafka analysis part 1 Kafka 是由 LinkedIn 开发的一个分布式的消息系统 使用 Scala 编写 它以可水平扩展和高吞吐率而被广泛使用
  • 计网第四章(网络层)(三)(定长掩码和变长掩码)

    IPV4地址的应用规划 定长的子网掩码FLSM 使用同一个子网掩码划分子网 每个子网所分配的IP地址数量相同 造成IP地址的浪费 变长的子网掩码VLSM 使用不同的子网掩码划分子网 每个子网所分配的IP地址数量可以不相同 尽可能地减少对IP
  • 巨人互动

    Facebook是全球最大的社交媒体平台之一 每天有数十亿的用户在其上发布 分享和交流各种内容 为了维护平台的安全性和用户体验 Facebook制定了严格的风控规则来监测和处理违规行为 下面小编讲讲Facebook风控规则 巨人互动 Goo
  • Graphviz 安装教程

    下载安装 windows版本下载地址 http www graphviz org Download windows php 选择需要的版本就行了 安装时勾选下面方框中的选项 将路径添加到系统路径中 这一步不选的话就需要人为添加路径 配置环境
  • CSS实现渐变色边框(Gradient borders)的5种方法

    1 使用border image CSS 提供了 border image 属性用于给 border 绘制复杂图样 与 background image 类似 我们可以在 border 中展示image和linear gradient 通过
  • c++STL常用容器之Queue容器——全面总结(附案例解析)(十五)

    这里有C STL 全面总结详细教程 附案例解析 持续更新中 目录 queue 容器 queue 基本概念 queue 常用接口
  • php 访问 HTTP 网址

    1 只需获取状态码 判断网址是否正常打开 url https www baidu com array get headers url 1 print r array 判断是否正常打开 url https www baidu com arra
  • SpringBoot项目整合JPA+QueryDSL,及apt-maven-plugin报错问题解决

    闲暇之余项搞个JPA的Demo 采用的是SpringBoot JPA QueryDSL 开发工具为Eclipse JPA官网 https spring io projects spring data jpa QueryDSL官网 http
  • Specified class is an interface

    错误 在springboot 启动时候出现该错误 表示有重复的mapper 而且两个mapper 都加了 Mapper注解 或者在mybatis的配置文件中配置了 所以会导致 混乱 解决方法 根据报错提示找到多余的mapper 进行统一化处
  • Jedis之Java操作redis实现模拟验证码发送操作

    import cn hutool core util RandomUtil import redis clients jedis Jedis import java util Scanner author oliverloki Descri