使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 该博客文章展示了如何在Linux虚拟机上使用Redis和Jedis客户端实现手机验证码的验证功能,包括验证码的生成、存储、验证以及限制每天发送次数的逻辑,并提供了测试结果截图。

文章目录

    • 1、代码
    • 2、测试结果
      • 2.1、第一次发送
      • 2.2、填写正确的验证码
      • 2.3、填写错误的验证码
      • 连续发送多次验证码

环境准备:虚拟机Linux系统,redis安装在虚拟机中。
前提条件:虚拟机开启、redis开启。需要在pom中加入jedis依赖

1、代码

package com.jedis;

import redis.clients.jedis.Jedis;

import java.util.Random;

public class JedisTestRedis {
    public static void main(String[] args) {
        //模拟发送
        verifyCode("18548375642");
//        getReidsCode("18548375642","11684");

//        System.out.println(getRandom());

    }

    //3、验证验证码
    public static void getReidsCode(String phone,String code){
        //连接redis
        Jedis jedis = new Jedis("虚拟机地址",6379);
        jedis.auth("123456");

        //验证码
        String codeKey = "verifyCode"+phone+"code";
        String redisCode = jedis.get(codeKey);

        //判断
        if(redisCode.equals(code)){
            System.out.println("成功");
        }else{
            System.out.println("失败");
        }
        jedis.close();
    }

   public static void verifyCode(String phone){
        //连接redis
       Jedis jedis = new Jedis("虚拟机地址",6379);
       jedis.auth("123456");

       //手机发送次数key
       String countKey = "verifyCode"+phone+"count";

       //验证码
       String codeKey = "verifyCode"+phone+"code";

       //每个手机每天发送三次
       String count = jedis.get(countKey);
       if(count == null){
           //第一次发送、设置次数1
           jedis.setex(countKey,24*60*60,"1");
       }else if(Integer.parseInt(count)<=2){
           //发送次数加1
           jedis.incr(countKey);
       }else if(Integer.parseInt(count)>2){
           System.out.println("发送次数已经达到三次");
           jedis.close();
           return;
       }

       //发送验证码放到redis中
       String vcode = getRandom();
       System.out.println(vcode);
       jedis.setex(codeKey,120,vcode);
       jedis.close();


   }



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


    }


}

2、测试结果

2.1、第一次发送

在这里插入图片描述

2.2、填写正确的验证码

在这里插入图片描述

2.3、填写错误的验证码

在这里插入图片描述

连续发送多次验证码

在这里插入图片描述

相关文章
|
22天前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
103 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
3月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
241 5
|
22天前
|
消息中间件 Kafka Linux
Linux下安装Kafka 3.9.1
本文介绍Kafka 3.9.1版本的安装与配置,包括通过ZooKeeper或KRaft模式启动Kafka。涵盖环境变量设置、日志路径修改、集群UUID生成、存储格式化及服务启停操作,适用于Linux环境下的部署实践。
169 0
|
3月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
173 5
|
3月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
3月前
|
Ubuntu 安全 Linux
Linux这5款微型发行版,体积小+精简,比win7运行还快,值得安装
以上5款微型发行版体积小且精简,如果你有台旧电脑,不妨试试?
|
数据安全/隐私保护 虚拟化 Windows
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
|
数据安全/隐私保护 虚拟化 Windows
如何在 VM 虚拟机中安装 Windows Server 2012 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows Server 2012 操作系统保姆级教程(附链接)