Jedis操作Redis實(shí)現(xiàn)模擬驗(yàn)證碼發(fā)送功能
jedis的創(chuàng)建
1.先啟動(dòng)redis 如果報(bào)

那么說(shuō)明你redis服務(wù)器服務(wù)器端還沒(méi)打開(kāi)
//啟動(dòng)服務(wù)端 redis-server /etc/redis.conf //啟動(dòng)客戶端 redis-cli
如果啟動(dòng)成功,就是這樣

2.創(chuàng)建一個(gè)maven工程
導(dǎo)入Jedis依賴
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
3.創(chuàng)建一個(gè)class
public class JedisDemo1 {
public static void main(String[] args) {
Jedis jedis = new Jedis("xx.xxx.xx.xx",6379);
//如果redis配置了密碼就在這里輸入不然會(huì)連接失敗
jedis.auth("xxxx");
String value = jedis.ping();
System.out.println(value);
}
}
如果是第一次連接會(huì)很大概率報(bào)錯(cuò)

這時(shí)候有兩種方法第一種是關(guān)閉防火墻,但是這種不太好,其實(shí)只要開(kāi)放6379端口連接就可以了
jedis實(shí)現(xiàn)模擬驗(yàn)證碼
public class PhoneCode {
public static void main(String[] args) {
verifyCode("12345678900");
//校驗(yàn)驗(yàn)證碼是否正確
// GetRedisCode("12345678900","940487");
}
//1.生成六位驗(yàn)證碼
public static String getCode(){
Random random = new Random();
String Code = "";
for (int i = 0; i < 6; i++) {
int i1 = random.nextInt(10);
Code = Code +i1;
}
return Code;
}
//2.每個(gè)手機(jī)每天只能發(fā)三次,驗(yàn)證碼放到redis中,設(shè)置過(guò)期時(shí)間
public static void verifyCode(String phone){
//連接redis
Jedis jedis = new Jedis("172.18.17.215",6379);
jedis.auth("1052600676");
//先自定義兩個(gè)key,從而通過(guò)后面步驟給key賦一個(gè)value
//手機(jī)發(fā)送次數(shù)
String CountKey = phone+"count";
//驗(yàn)證碼key
String CodeKey = phone + "code";
//每個(gè)手機(jī)每天只能發(fā)送三次
//通過(guò)key查看是否有value
String count = jedis.get(CountKey);
if (count == null){
//沒(méi)有發(fā)送次數(shù),說(shuō)明是第一次發(fā)送,那就設(shè)置發(fā)送次數(shù)為1
jedis.setex(CountKey,24*60*60,"1");
}else if (Integer.parseInt(count) <= 2){
jedis.incr(CountKey);
}else if (Integer.parseInt(count) > 2){
System.out.println("驗(yàn)證碼超過(guò)三次,無(wú)法發(fā)送");
jedis.close();
return;
}
//設(shè)置過(guò)期時(shí)間
//value
String codee = getCode();
jedis.setex(CodeKey,120,codee);
jedis.close();
}
//3.驗(yàn)證碼校驗(yàn)
public static void GetRedisCode(String phone,String code){
//連接redis
Jedis jedis = new Jedis("172.18.17.215",6379);
jedis.auth("1052600676");
//驗(yàn)證碼key
String CodeKey = phone + "code";
String RedisCode = jedis.get(CodeKey);
if (RedisCode.equals(code)){
System.out.println("成功");
}else{
System.out.println("失敗");
}
jedis.close();
}
}
通過(guò)這些操作實(shí)現(xiàn)驗(yàn)證碼發(fā)送

超過(guò)三次

相關(guān)數(shù)據(jù)類型測(cè)試
Key
jedis.set("k1", "v1");
jedis.set("k2", "v2");
jedis.set("k3", "v3");
Set<String> keys = jedis.keys("*");
System.out.println(keys.size());
for (String key : keys) {
System.out.println(key);
}
System.out.println(jedis.exists("k1"));
System.out.println(jedis.ttl("k1"));
System.out.println(jedis.get("k1"));
String
jedis.mset("str1","v1","str2","v2","str3","v3");
System.out.println(jedis.mget("str1","str2","str3"));
List
List<String> list = jedis.lrange("mylist",0,-1);
for (String element : list) {
System.out.println(element);
}
set
jedis.sadd("orders", "order01");
jedis.sadd("orders", "order02");
jedis.sadd("orders", "order03");
jedis.sadd("orders", "order04");
Set<String> smembers = jedis.smembers("orders");
for (String order : smembers) {
System.out.println(order);
}
jedis.srem("orders", "order02");
hash
jedis.hset("hash1","userName","lisi");
System.out.println(jedis.hget("hash1","userName"));
Map<String,String> map = new HashMap<String,String>();
map.put("telphone","13810169999");
map.put("address","atguigu");
map.put("email","abc@163.com");
jedis.hmset("hash2",map);
List<String> result = jedis.hmget("hash2","telphone","email");
for (String element : result) {
System.out.println(element);
}
zset
jedis.zadd("zset01", 100d, "z3");
jedis.zadd("zset01", 90d, "l4");
jedis.zadd("zset01", 80d, "w5");
jedis.zadd("zset01", 70d, "z6");
Set<String> zrange = jedis.zrange("zset01", 0, -1);
for (String e : zrange) {
System.out.println(e);
}
到此這篇關(guān)于Jedis操作Redis實(shí)現(xiàn)模擬驗(yàn)證碼發(fā)送的文章就介紹到這了,更多相關(guān)Redis驗(yàn)證碼發(fā)送內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis消息隊(duì)列的三種實(shí)現(xiàn)方式
本文主要介紹了Redis消息隊(duì)列的三種實(shí)現(xiàn)方式,主要包括List實(shí)現(xiàn)消息隊(duì)列,PubSub消息隊(duì)列,Stream消息隊(duì)列,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
完美解決Redis在雙擊redis-server.exe出現(xiàn)閃退問(wèn)題
本文主要介紹了完美解決Redis在雙擊redis-server.exe出現(xiàn)閃退問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Redis超詳細(xì)講解高可用主從復(fù)制基礎(chǔ)與哨兵模式方案
Redis因?yàn)槠涓咝阅芎鸵子眯栽谖覀兒蠖说姆?wù)中發(fā)揮了巨大的作用,并且很多重要功能的實(shí)現(xiàn)都會(huì)依賴redis,本篇我們來(lái)了解Redis高可用主從復(fù)制與哨兵模式2022-04-04
Redis做預(yù)定庫(kù)存緩存功能設(shè)計(jì)使用
這篇文章主要為大家介紹了Redis做預(yù)定庫(kù)存緩存功能設(shè)計(jì)使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
用Lua腳本實(shí)現(xiàn)Redis原子操作的示例
本文主要介紹了用Lua腳本實(shí)現(xiàn)Redis原子操作的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
Redis 單節(jié)點(diǎn)部署的實(shí)現(xiàn)
本文主要介紹了Redis 單節(jié)點(diǎn)部署的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
redisson滑動(dòng)時(shí)間窗應(yīng)用場(chǎng)景解決方案
前10分鐘內(nèi)累計(jì)3次驗(yàn)證失敗后,增加圖形驗(yàn)證碼驗(yàn)證條件,前10分鐘內(nèi)累計(jì)6次驗(yàn)證失敗后,系統(tǒng)自動(dòng)鎖定該賬號(hào)15分鐘,15分鐘后自動(dòng)解鎖,本文給大家分享redisson滑動(dòng)時(shí)間窗應(yīng)用場(chǎng)景解決方案,感興趣的朋友一起看看吧2024-01-01

