需求

  1. 输入手机号,点击发送后随机生成6位数字码,2分钟有效
  2. 输入验证码,点击验证,返回成功或失败
  3. 每个手机号每天只能输入3次

实现思路

在redis中设置两个字符串类型的数据:

  1. 手机号为键,验证码为值,并设置过期时间为2分钟。
  2. 手机号+当前年月日为键,次数为值。实现每日三次次数
    验证时取出redis中的验证码与自己输入的验证码对比。

实现代码

发送验证码:

/*** 发送验证码* @param phone*/public static void sendCode(String phone,Jedis jedis){Random random = new Random();String timeKey = phone+new SimpleDateFormat("yyyy-MM-dd").format(new Date());Boolean exists = jedis.exists(timeKey);if (!exists){jedis.set(timeKey,"0");}Integer time = Integer.parseInt(jedis.get(timeKey));if (time >= 3){System.out.println("该号码每日发送验证码次数已达上限。");return;}StringBuilder sb = new StringBuilder();for (int i = 0; i < 6; i++) {sb.append(random.nextInt(10));}String code = sb.toString();time += 1;jedis.mset(phone,code,timeKey,time.toString());// 设置验证码过期时间为两分钟jedis.expire(phone,120);//System.out.println("您的验证码为:"+code+"、有效时间为两分钟!!!");}

验证验证码

    /*** 验证验证码* @param phone*/public static void checkCode(String phone,Jedis jedis){Scanner scanner = new Scanner(System.in);// 获取验证码String code = jedis.get(phone);// 验证输入的验证码是否正确if (code != null){if (code.equals(scanner.next().trim())){System.out.println("验证通过!");}else {System.out.println("验证码错误!");}}else {System.out.println("验证码已过期!!");}}

测试:

 public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Jedis jedis = new Jedis("XXX.XXX.XXX.XXX",6379);System.out.println(jedis.ping());sendCode("XXXXXXXX",jedis);checkCode("XXXXXXXX",jedis);jedis.close();}

结果:


redis练习-模拟手机验证码的发送相关推荐

  1. Redis——模拟手机验证码发送

    使用redis模拟手机验证码发送,规定一个手机号一天只能请求三次验证码,且每次请求的验证码只有两分钟就会过期 1.首先写一个函数随机产生六位验证码,使用random函数 //随机生成六位验证码publ ...

  2. 【redis】模拟手机发送验证码

    要求: 1.输入手机号,点击发送后随机生成6位数字码,2分钟有效 2.输入验证码,点击验证,返回成功或失败 3.每个手机号每天只能发送3次 分析: 随机生成6位数数字码: 使用Ramdom 验证码2分 ...

  3. Java登录专题-----手机验证码登录 发送验证码

    1.打印日志 ,检验入参 入参为  mobile 手机号 action动作  分为注册,与登录 2. UserInfoModel userInfoModel = new UserInfoModel() ...

  4. 使用apipost模拟手机实现请求发送

    一.apipost中有专门针对于模拟手机请求发送的参数 首先我们新建一个接口,访问www.baidu.com然后点击发送 然后我们在创建一个接口,这个是访问移动版的www.baidu.com不过这里需 ...

  5. springboot整合redis之用户手机验证码注册登录

    目录 1搭建项目开发环境 1.1安装redis 1.1.1下载redis 1.1.2安装redis 1.1.3设置redis为windows服务 安装为windows服务 1.2启动idea 1.3增 ...

  6. Java实现发送手机验证码,发送短信

    要发送短信,我们需要第三方提供的短信接口,这里我使用阿里云的短信服务. 首先进入阿里云的官网,然后注册.登陆之后选择云通信-->短信服务 然后点击免费开通. 开通后进入控制中心,选择右上方的支持 ...

  7. js模拟手机验证码倒计时

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. html 调用手机短信,innerHTML应用模拟手机短信发送

    一.效果图. 二.HTML+CSS样式. .box{ width:500px; margin:90px auto;} .wrad_box{ width:320px; height:400px; bor ...

  9. 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)

    文章目录 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现) 1.打开腾讯云短信服务 2.创建短信签名 3.创建短信正文模板 4.等待全部审核完毕即可 5.发送短信 ...

  10. flask创建手机验证码发送逻辑

    flask创建手机验证码发送逻辑 同样的,回顾django中使用手机验证码的逻辑,大致可以分为几步 1.获取用户手机号码 2.校验手机号码 3.生成验证码 4.将验证码添加手机号查询方式添加到redi ...

最新文章

  1. 动态规划习题,关系式推导和求模技巧
  2. 后端技术:Web安全常见漏洞和修复建议,值得收藏!
  3. 如何实时主动监控你的网站接口是否挂掉并及时报警
  4. es6 includes(), startsWith(), endsWith()
  5. SM3密码杂凑算法源码解析
  6. 乔布斯在斯坦福大学演讲稿英文_西方大文豪最爱的10个英文单词,写尽人世间细腻情感!...
  7. 5月第二周全球五大顶级域名总量新增10.5万个
  8. 萌新的Python练习菜鸟100例(十六)输出指定格式的日期。
  9. rabbitmq 查看消费者_(Windows环境下)RabbitMQ系列(一)安装以及入门使用
  10. MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j
  11. javaScript面试题大全
  12. Google 网站打不开
  13. iocomp入门教程(绘制Plot)
  14. Spark学习之路——9.Spark ML
  15. 嵌入式开发是什么,与纯软件什么区别?
  16. MFC课程设计 --学生成绩管理系统
  17. postgresql常用操作指令
  18. Amazon UK 可通过EDI实现哪些业务单据对接?
  19. ffmpeg截取视频片段的两种方式 1) 按时间截取 2)按帧数截取
  20. 每个程序员都应该阅读的最有影响力的书是什么?

热门文章

  1. Android Fragment(一)
  2. xcode 4 with subversion SVN server–Tips
  3. 虚拟机的性能测试经验总结(一)
  4. Discuz!NT3.0博客扩展
  5. 12.TCP/IP 详解卷1 --- 广播和多播
  6. 54. yii 动作参数绑定
  7. 1. Symfony 2 --- 简介
  8. 65. magent 手动创建用户
  9. 5. Adapter Pattern(适配器模式)
  10. 电脑硬盘坏道怎么检测,又如何修复图文教程