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

简介: 该博客文章展示了如何在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、填写错误的验证码

在这里插入图片描述

连续发送多次验证码

在这里插入图片描述

相关文章
|
9月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
3692 3
|
10月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
8月前
|
安全 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 自动化安装程序
557 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
8月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
853 6
|
8月前
|
消息中间件 Kafka Linux
Linux下安装Kafka 3.9.1
本文介绍Kafka 3.9.1版本的安装与配置,包括通过ZooKeeper或KRaft模式启动Kafka。涵盖环境变量设置、日志路径修改、集群UUID生成、存储格式化及服务启停操作,适用于Linux环境下的部署实践。
1082 0
|
10月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
477 5
|
10月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
8月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
810 25