第8章 Redis_Jedis_实例
8.1 完成一个手机验证码功能
要求:
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次
package com.sun.jedis; import redis.clients.jedis.Jedis; import java.util.Random; /** * 手机验证码功能: * 每天每个手机号只能发送三次验证码,验证码有效期为2分钟,验证码为6位数字 */ public class PhoneCode { public static void main(String[] args) { //1.设置redis的key:每天每个手机号只能发送三次验证码,验证码有效期为2分钟 setEx("13894513251"); //2.校验redis验证码是否与用户输入的相同 // verifyCode("13894513251","877177"); } //1,生成6位验证码 public static String getCode() { Random random = new Random(); String code = ""; for(int i=0; i < 6; i++){ int rand = random.nextInt(10); code += rand; } return code; } //2.设置redis的key:每天每个手机号只能发送三次验证码,验证码有效期为2分钟 public static void setEx(String phone) { //连接redis Jedis jedis = new Jedis("IP地址",6379); //手机发送次数key String phoneKey = "verifyCode:"+phone+":count"; //验证码key String codeKey = "verifyCode:"+phone+":code"; //每个手机每天只能发送三次 String count = jedis.get(phoneKey); if(count == null){ //没有发送过,第一次发送 jedis.setex(phoneKey,24*60*60,"1"); }else if(Integer.parseInt(count) <= 2){ //未达到三次,加1 jedis.incrBy(phoneKey,1); }else if(Integer.parseInt(count) > 2){ //达到三次,不能再发送 System.out.println("今天发送次数已经超过三次"); jedis.close(); return; } //验证码有效期为2分钟 String vcode = getCode(); jedis.setex(codeKey,120,vcode); jedis.close(); } //3.校验redis验证码是否与用户输入的相同 public static void verifyCode(String phone, String code){ //连接redis Jedis jedis = new Jedis("IP地址",6379); //从redis中获取验证码 String codeKey = "verifyCode:"+phone+":code"; String verifyCode = jedis.get(codeKey); if(verifyCode.equals(code)) { System.out.println("成功"); }else { System.out.println("失败"); } jedis.close(); } }
分类:
DataBase:Redis 6
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器