redis?手機(jī)驗(yàn)證碼實(shí)現(xiàn)示例
本文主要介紹了redis 手機(jī)驗(yàn)證碼實(shí)現(xiàn)示例,分享給大家,具體如下:
/** * @author gh Email:@2495140780qq.com * @Description * @date 2021-11-10-21:12 */ public class PhoneCode { public static void main(String[] args) { //模擬驗(yàn)證碼發(fā)送 // verifyCode("13796734562"); //效驗(yàn) getRedisCode("13796734562", "740032"); } //3.驗(yàn)證碼的校驗(yàn) public static void getRedisCode(String phone,String code) { //從redis中獲取驗(yàn)證碼 Jedis jedis = new Jedis("127.0.0.1",6379); //驗(yàn)證碼key String codeKey = "VerifyCode"+phone+":code"; String redisCode = jedis.get(codeKey); //判斷 if(redisCode.equals(code)) { System.out.println("成功"); }else { System.out.println("失敗"); } jedis.close(); } //2.每個手機(jī)每天只能發(fā)送三次,驗(yàn)證碼放到redis中,設(shè)置過期時間60 public static void verifyCode(String phone) {//手機(jī)號 //鏈接redis Jedis jedis = new Jedis("127.0.0.1",6379); //拼接key //手機(jī)發(fā)送次數(shù) String countKey = "VerifyCode" + phone + ":count";//規(guī)則保證唯一,規(guī)則自己訂 //驗(yàn)證碼key String codeKey = "VerifyCode" + phone + ":code"; //每個手機(jī)每天只能發(fā)送三次 String count = jedis.get(countKey);//手機(jī)發(fā)送次數(shù) if (count == null) { //沒有發(fā)送次數(shù),第一次發(fā)送 //設(shè)置發(fā)送次數(shù)是1 jedis.setex(countKey, 24*60*60, "1"); }else if (Integer.parseInt(count) <= 2) { //發(fā)送次數(shù) +1 jedis.incr(countKey); }else if (Integer.parseInt(count) >2) { //發(fā)送三次,不能大發(fā)送 System.out.println("今天發(fā)送次數(shù)已經(jīng)超過三次"); jedis.close(); return; } //發(fā)送的驗(yàn)證放到redis中去 String vcode = getCode(); jedis.setex(codeKey,120,vcode); jedis.close(); } //1.生成6位的驗(yàn)證碼 public static String getCode() { Random random = new Random(); String code = ""; for (int i = 0; i < 6; i++) { int rand = random.nextInt(10); //10 以內(nèi)的值 code += rand; } return code; } }
發(fā)送驗(yàn)證碼
127.0.0.1:6379> flushdb OK 127.0.0.1:6379> keys * 1) "VerifyCode13796734562:count" 2) "VerifyCode13796734562:code" 127.0.0.1:6379> get VerifyCode13796734562:count # 第一次獲取驗(yàn)證碼 "1" 127.0.0.1:6379> get VerifyCode13796734562:code # 獲取的驗(yàn)證碼為 "478121" 127.0.0.1:6379> get VerifyCode13796734562:count "2" 127.0.0.1:6379> get VerifyCode13796734562:code "250610" 校驗(yàn)
到此這篇關(guān)于redis 手機(jī)驗(yàn)證碼實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)redis 手機(jī)驗(yàn)證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
redis數(shù)據(jù)一致性的實(shí)現(xiàn)示例
所謂的redis數(shù)據(jù)一致性即當(dāng)進(jìn)行修改或者保存、刪除之后,redis中的數(shù)據(jù)也應(yīng)該進(jìn)行相應(yīng)變化,本文主要介紹了redis數(shù)據(jù)一致性,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Redis數(shù)據(jù)結(jié)構(gòu)之鏈表詳解
大家好,本篇文章主要講的是Redis數(shù)據(jù)結(jié)構(gòu)之鏈表詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12RedisDesktopManager無法遠(yuǎn)程連接Redis的完美解決方法
下載RedisDesktopManager客戶端,輸入服務(wù)器IP地址,端口(缺省值:6379);點(diǎn)擊Test Connection按鈕測試連接,連接失敗,怎么回事呢?下面小編給大家?guī)砹薘edisDesktopManager無法遠(yuǎn)程連接Redis的完美解決方法,一起看看吧2018-03-03關(guān)于redis Key淘汰策略的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄P(guān)于redis Key淘汰策略的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03Redis實(shí)現(xiàn)短信登錄的企業(yè)實(shí)戰(zhàn)
本文主要介紹了Redis實(shí)現(xiàn)短信登錄的企業(yè)實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Redis分布式鎖python-redis-lock使用方法
這篇文章主要介紹了Redis分布式鎖python-redis-lock使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11