Java 利用 Redis 實現簡訊驗證碼 邏輯

2021-09-24 19:57:22 字數 1985 閱讀 5060

1. 每條驗證碼傳送間隔最小為 1分鐘

2. 每個手機號每天最多傳送三條驗證碼

3. 驗證碼 5 分鐘內有效

4. 次日 00:00 恢**送

1. 傳送前驗證手機號是否符合要求

2. 生成簡訊驗證碼

3. 傳送驗證碼到手機

private final string mobile_regex = "^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\\d$";

public generalresult code(@requestparam("mobile") string mobile) else

}//endregion

try catch (exception ex)

}

/**

* 手機號驗證

* @param mobile

* @return

*/private mapvalidatemobile(final string mobile)

// 是否首次

if(!redis.haskey(mobile))

// 驗證傳送次數

boundhashoperationshashobj = redis.boundhashops(mobile + sms_record_suffix_key);

integer count = integer.valueof(hashobj.get("count").tostring());

if(count >= max_count)

// 驗證傳送時間

long lasttime = long.valueof((string) hashobj.get("last_time"));

long seconds = (system.currenttimemillis() - lasttime) / 1000;

if(seconds > send_interval) else

return resultmap;

}/**

* 生成六位驗證碼

* @return

*/private string generatecode()

/*** 寫入快取

* @param mobile

* @param code

*/private void writecache(string mobile, string code)

hashobj.increment("count", 1);

if(hashobj.getexpire() == -1)

}/**

* 獲取快取過期時間

* @return

*/private date getexpiretime()

// 執行傳送

@override

public void sendauthcode(string mobile) throws exception

//endregion

// 生成驗證碼

string code = generatecode();

// 呼叫傳送介面

smsutil.sendcode(mobile, code);

system.out.println("簡訊傳送成功");

// 寫入快取中

writecache(mobile, code);

}

主要用到了 redis 中的過期清除的功能和兩個資料型別分別為 hash 和 string。string 型別用於儲存傳送的驗證碼並設定清除時間為 300s ,也就是說如果驗證碼在 300秒之內沒有被驗證,那麼超過這個時間 驗證碼就不存在了,需要從新生成。

hash 型別主要用來記錄簡訊的傳送情況,分別為: 上一次傳送時間(last_time)、傳送次數(count) 等。 同時型別本身也設定了超時時間為次日的 00:00, 這樣就保障了簡訊隔天正常傳送。

java 實現簡訊傳送

本文使用中國網建提供的sms簡訊平台。如下 namevaluepair data 註冊的使用者名稱 注意 2 多個手機號請用半形,隔開 如 13888888886,13888888887,1388888888 一次最多對100個手機傳送 3 傳送測試簡訊請勿輸入 簡訊測試等詞語,請直接提交您要傳送的...

利用簡訊佇列實現簡訊高可靠傳送

簡訊要想實現可靠傳送,在任何時候都保證簡訊不丟失,用佇列來儲存簡訊十分必要。簡訊有時候因為訊號 欠費等原因,有時候會傳送失敗,在這種情況下要有重發的機制。簡訊只要在佇列中儲存,就比較容易實現二次傳送 三次傳送。有好多技術可以實現佇列,用資料庫實現佇列,即保證了速度,又實現了很好的可靠性。用資料庫實現...

C 利用Web Service實現簡訊傳送

通過程式設計方式實現簡訊息的傳送對很多人來說是一件比較煩雜的事情,目前一般的解決方法是通過計算機和手機的連線,通過可對手機程式設計的語言編寫相關的手機簡訊息程式來實現,而這種方法對於一般人來說是很難達到的,因為此種方法不僅要有很多必備的硬體裝置,也還需懂得手機程式設計的相關知識。本文就來 一下另外一...