IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis——模拟手机验证码发送 -> 正文阅读

[大数据]Redis——模拟手机验证码发送

使用redis模拟手机验证码发送,规定一个手机号一天只能请求三次验证码,且每次请求的验证码只有两分钟就会过期

1、首先写一个函数随机产生六位验证码,使用random函数

//随机生成六位验证码
    public static String getCode(){
        String code="";
        Random random = new Random();
        //随机函数生成验证码
        for (int i = 0; i < 6; i++) {
            code+= random.nextInt(10);
        }
        return code;
    }

2、写一个函数判断一个手机号一天验证码发送次数,流程如下:

①使用jedis连接redis,第一个参数为linux虚拟地址,第二个参数为redis默认端口号

②生成存储手机号发送次数,验证码对应的key

③判断该手机号一天发送验证码的次数,为空表明手机号未请求过,则将手机号次数存储进入,bi并设置过期时间为1天,若小于三次则自增

④存储验证码进redis,并设置过期时间为2分钟

//判断手机一天是否发送超过3次验证码
    public static Boolean Phone(String phone){
        //连接linux中的redis
        Jedis jedis = new Jedis("192.168.12.188",6379);
        //生成手机存储的key
        String phoneKey="Phone"+phone+"p";
        //生成存储验证码的key
        String codeKey="Code"+phone+"c";
        //获取key为phoneKey的值
        String key = jedis.get(phoneKey);
        //判断redis中phoneKey值是否为空
        if (key==null){
            //为空存储phoneKey,并设置过期时间为1天,值为1,代表发送过一次
            jedis.setex(phoneKey,24*60*60,"1");
        }
        //若不为空,且发送次数小于3,phoneKey++
        else if (Integer.parseInt(key)<=2){
            jedis.incr(phoneKey);
        }
        //若发送超过三次,提示不能发送
        else {
            System.out.println("今天发送次数已经超过三次,不能再获取验证码");
            jedis.close();
            return false;
        }
        //获取验证码
        String code=getCode();
        //存储验证码
        jedis.setex(codeKey,120,code);
        jedis.close();
        return true;
    }

3、判断验证码是否正确

①通过手机号拼接字符串,获取验证码的key值

②验证验证码是否正确

//验证验证码是否正确
    public static Integer Code(String code,String phone){
        //连接jedis
        Jedis jedis = new Jedis("192.168.23.129",6379);
        String codekey="Code"+phone+"c";
        String s = jedis.get(codekey);
        //判断验证码是否正确
        if (code.equals(s)){
            System.out.println("验证码正确");
            return 1;
        }else {
            System.out.println("验证码错误,请重新请求");
            return 0;
        }
    }

4、启动linux中redis服务端,找到redis.conf,启动执行下面命令即可启动

redis-server /opt/redis-6.2.1/redis.conf

5、执行函数

①输入手机号,并确认是否发送验证码

②调用判断手机号发送验证码次数函数,判断是否三次已经发完,若发完,直接退出

③输入验证码,调用验证验证码函数,若正确,直接退出程序

④若输入验证码失败,确认是否继续发送验证码

public static void main(String[] args) {
        //创建一个手机号
        String phone="";
        String tip="";
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入手机号:");
        phone=scanner.nextLine();
        System.out.print("是否获取验证码:(y/n)");
        tip=scanner.nextLine();
        if (tip.equals("y")){
            while (tip.equals("y")){
                //打印验证码到控制台
                Boolean p=Phone(phone);
                if (!p){
                    //发送超过三次,退出while
                    break;
                }
                System.out.println(getCode());
                System.out.print("请输入验证码:");
                String code=scanner.nextLine();
                if (Code(code,phone).equals(1)){
                    System.out.println("验证正确");
                    break;
                }
                System.out.print("是否重新获取验证码:(y/n)");
                tip=scanner.nextLine();
            }
        }

    }

运行结果如下

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:39:43  更:2022-03-04 15:42:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:15:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码