日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/8 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.conf

5、執行函數

①輸入手機號,并確認是否發送驗證碼

②調用判斷手機號發送驗證碼次數函數,判斷是否三次已經發完,若發完,直接退出

③輸入驗證碼,調用驗證驗證碼函數,若正確,直接退出程序

④若輸入驗證碼失敗,確認是否繼續發送驗證碼

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——模拟手机验证码发送的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。