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中的redisJedis jedis = new Jedis("192.168.12.188",6379);//生成手機存儲的keyString phoneKey="Phone"+phone+"p";//生成存儲驗證碼的keyString 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){//連接jedisJedis 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.conf5、執行函數
①輸入手機號,并確認是否發送驗證碼
②調用判斷手機號發送驗證碼次數函數,判斷是否三次已經發完,若發完,直接退出
③輸入驗證碼,調用驗證驗證碼函數,若正確,直接退出程序
④若輸入驗證碼失敗,確認是否繼續發送驗證碼
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){//發送超過三次,退出whilebreak;}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();}}}運行結果如下
?
?
總結
以上是生活随笔為你收集整理的Redis——模拟手机验证码发送的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32F4 FPU浮点运算单元
- 下一篇: linux cmake编译源码,linu