欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用Java redis實現發(fā)送手機驗證碼功能

 更新時間:2020年05月12日 14:46:04   作者:護花使者  
這篇文章主要介紹了如何使用Java redis實現發(fā)送手機驗證碼功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

要求:

1、輸入手機號,點擊發(fā)送后隨機生成6位數字碼,2分鐘有效

2、輸入驗證碼,點擊驗證,返回成功或失敗

3、每個手機號每天只能輸入3次

代碼如下

import redis.clients.jedis.Jedis;

import java.util.Random;

public class ValidationTest {
  public static void main(String[] args) {
    //getValidation("15005076571");
    //checkValidation("769897","15005076571");
  }

  static void getValidation(String tel) {
    //主機、端口
    Jedis jedis = new Jedis("myhost", 6379);
    //密碼
    jedis.auth("mypassword");
    try {
      //獲取電話號碼
      String phoneNo = tel;
      //本人用1庫進行測試
      jedis.select(1);
      String countKey = phoneNo + ":count";
      String codeKey = phoneNo + ":code";
      //獲取指定的電話號碼發(fā)送的驗證碼次數
      String cnt = jedis.get(countKey);
      //對次數進行判斷
      if (cnt == null) {
        //沒有發(fā)送過驗證碼
        jedis.setex(countKey, 60 * 60 * 24, "1");
        //發(fā)送驗證碼,假設生成的驗證碼
        StringBuffer code = new StringBuffer();
        for (int i = 0; i < 6; i++) {
          code.append(new Random().nextInt(10));
        }
        System.out.println("code:" + code);
        //緩存中添加驗證碼
        jedis.setex(codeKey, 60 * 2, code.toString());
      } else {
        if (Integer.parseInt(cnt) < 3) {
          //發(fā)送驗證碼,假設生成的驗證碼
          StringBuffer code = new StringBuffer();
          for (int i = 0; i < 6; i++) {
            code.append(new Random().nextInt(10));
          }
          System.out.println("code:" + code);
          //緩存中添加驗證碼
          jedis.setex(codeKey, 60 * 2, code.toString());
          //遞增手機發(fā)送數量
          jedis.incr(countKey);
        } else {
          //返回超出3次,禁止發(fā)送
          System.out.println("超出3次,禁止發(fā)送");
        }
      }
    } catch (Exception e) {
      //這邊其實是需要回滾下redis
      e.printStackTrace();
    } finally {
      //關閉redis
      if (jedis != null) {
        jedis.close();
      }
    }
  }

  static void checkValidation(String code, String tel) {
    Jedis jedis = null;
    try {
      jedis = new Jedis("myhost", 6379);
      //密碼
      jedis.auth("mypassword");
      jedis.select(1);
      String codeKey = tel + ":code";
      String validation = jedis.get(codeKey);
      if (validation == null) {
        System.out.println("驗證碼未發(fā)送或者失效");
      } else {
        if (validation.equals(code)) {
          System.out.println("驗證成功");
        } else {
          System.out.println("驗證失敗");
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (jedis != null) {
        jedis.close();
      }
    }
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 如何取消IDEA中的項目和Git倉庫的關聯

    如何取消IDEA中的項目和Git倉庫的關聯

    這篇文章介紹了一種取消已經開啟代碼控制的項目與Git倉庫關聯的簡單方法,首先,在IntelliJ IDEA中打開項目,刪除.idea目錄下的vcs.xml文件,這樣IDE界面上的Git圖標就會消失,接下來,打開項目所在位置,通過文件管理器啟用“顯示隱藏的項目”選項
    2024-10-10
  • java線程的基礎實例解析

    java線程的基礎實例解析

    java中線程的基本方法的熟練使用是精通多線程編程的必經之路,線程相關的基本方法有wait,notify,notifyAll,sleep,join,yield等,本文淺要的介紹一下它們的使用方式
    2021-06-06
  • Java實體類(entity)作用說明

    Java實體類(entity)作用說明

    這篇文章主要介紹了Java實體類(entity)作用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring避免循環(huán)依賴的策略詳解

    Spring避免循環(huán)依賴的策略詳解

    在Spring框架中,循環(huán)依賴是指兩個或多個bean相互依賴對方,形成一個閉環(huán),這在應用啟動時可能導致BeanCurrentlyInCreationException異常,本文給大家介紹了Spring中如何避免循環(huán)依賴,需要的朋友可以參考下
    2024-02-02
  • Spring中使用ehcache緩存的方法及原理詳解

    Spring中使用ehcache緩存的方法及原理詳解

    這篇文章主要介紹了Spring中使用ehcache緩存的方法及原理詳解,ehcache具有很強的靈活性,提供了LRU、LFU和FIFO緩存淘汰算法,Ehcache 1.2引入了最近最少使用、最久未使用和先進先 出緩存淘汰算法, 構成了完整的緩存淘汰算法,,需要的朋友可以參考下
    2024-01-01
  • java工具類之實現java獲取文件行數

    java工具類之實現java獲取文件行數

    這篇文章主要介紹了一個java工具類,可以取得當前項目中所有java文件總行數,代碼行數,注釋行數,空白行數,需要的朋友可以參考下
    2014-03-03
  • Java實現經典游戲打磚塊游戲的示例代碼

    Java實現經典游戲打磚塊游戲的示例代碼

    這篇文章主要介紹了如何利用Java實現經典的游戲—打磚塊。玩家操作一根螢幕上水平的“棒子”,讓一顆不斷彈來彈去的“球”在撞擊作為過關目標消去的“磚塊”的途中不會落到螢幕底下。感興趣的小伙伴可以了解一下
    2022-02-02
  • Java中LinkedList和ArrayList的效率分析

    Java中LinkedList和ArrayList的效率分析

    本文主要介紹了Java中LinkedList和ArrayList的效率分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • springboot整合mybatis將sql打印到日志的實例詳解

    springboot整合mybatis將sql打印到日志的實例詳解

    這篇文章主要介紹了springboot整合mybatis將sql打印到日志的實例詳解,需要的朋友可以參考下
    2017-12-12
  • Java通過在主循環(huán)中判斷Boolean來停止線程的方法示例

    Java通過在主循環(huán)中判斷Boolean來停止線程的方法示例

    這篇文章主要介紹了Java通過在主循環(huán)中判斷Boolean來停止線程的方法,結合具體實例形式分析了java針對線程的判斷與停止操作相關實現技巧,需要的朋友可以參考下
    2017-04-04

最新評論