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

