Jedis操作Redis實現(xiàn)模擬驗證碼發(fā)送功能
更新時間:2021年09月24日 09:43:49 作者:Andrew0219
Redis是一個著名的key-value存儲系統(tǒng),也是nosql中的最常見的一種,這篇文章主要給大家介紹Jedis操作Redis實現(xiàn)模擬驗證碼發(fā)送功能,感興趣的朋友一起看看吧
jedis的創(chuàng)建
1.先啟動redis 如果報
那么說明你redis服務(wù)器服務(wù)器端還沒打開
//啟動服務(wù)端 redis-server /etc/redis.conf //啟動客戶端 redis-cli
如果啟動成功,就是這樣
2.創(chuàng)建一個maven工程
導(dǎo)入Jedis依賴
<dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency> </dependencies>
3.創(chuàng)建一個class
public class JedisDemo1 { public static void main(String[] args) { Jedis jedis = new Jedis("xx.xxx.xx.xx",6379); //如果redis配置了密碼就在這里輸入不然會連接失敗 jedis.auth("xxxx"); String value = jedis.ping(); System.out.println(value); } }
如果是第一次連接會很大概率報錯
這時候有兩種方法第一種是關(guān)閉防火墻,但是這種不太好,其實只要開放6379端口連接就可以了
jedis實現(xiàn)模擬驗證碼
public class PhoneCode { public static void main(String[] args) { verifyCode("12345678900"); //校驗驗證碼是否正確 // GetRedisCode("12345678900","940487"); } //1.生成六位驗證碼 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.每個手機每天只能發(fā)三次,驗證碼放到redis中,設(shè)置過期時間 public static void verifyCode(String phone){ //連接redis Jedis jedis = new Jedis("172.18.17.215",6379); jedis.auth("1052600676"); //先自定義兩個key,從而通過后面步驟給key賦一個value //手機發(fā)送次數(shù) String CountKey = phone+"count"; //驗證碼key String CodeKey = phone + "code"; //每個手機每天只能發(fā)送三次 //通過key查看是否有value String count = jedis.get(CountKey); if (count == null){ //沒有發(fā)送次數(shù),說明是第一次發(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("驗證碼超過三次,無法發(fā)送"); jedis.close(); return; } //設(shè)置過期時間 //value String codee = getCode(); jedis.setex(CodeKey,120,codee); jedis.close(); } //3.驗證碼校驗 public static void GetRedisCode(String phone,String code){ //連接redis Jedis jedis = new Jedis("172.18.17.215",6379); jedis.auth("1052600676"); //驗證碼key String CodeKey = phone + "code"; String RedisCode = jedis.get(CodeKey); if (RedisCode.equals(code)){ System.out.println("成功"); }else{ System.out.println("失敗"); } jedis.close(); } }
通過這些操作實現(xiàn)驗證碼發(fā)送
超過三次
相關(guān)數(shù)據(jù)類型測試
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實現(xiàn)模擬驗證碼發(fā)送的文章就介紹到這了,更多相關(guān)Redis驗證碼發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
RabbitMQ+redis+Redisson分布式鎖+seata實現(xiàn)訂單服務(wù)的流程分析
訂單服務(wù)涉及許多方面,分布式事務(wù),分布式鎖,例如訂單超時未支付要取消訂單,訂單如何防止重復(fù)提交,如何防止超賣、這里都會使用到,這篇文章主要介紹了RabbitMQ+redis+Redisson分布式鎖+seata實現(xiàn)訂單服務(wù)的流程分析,需要的朋友可以參考下2024-07-07