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

那么說明你redis服務(wù)器服務(wù)器端還沒打開
//啟動(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í)只要開放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è)置過期時(shí)間
public static void verifyCode(String phone){
//連接redis
Jedis jedis = new Jedis("172.18.17.215",6379);
jedis.auth("1052600676");
//先自定義兩個(gè)key,從而通過后面步驟給key賦一個(gè)value
//手機(jī)發(fā)送次數(shù)
String CountKey = phone+"count";
//驗(yàn)證碼key
String CodeKey = phone + "code";
//每個(gè)手機(jī)每天只能發(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("驗(yàn)證碼超過三次,無法發(fā)送");
jedis.close();
return;
}
//設(shè)置過期時(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();
}
}
通過這些操作實(shí)現(xiàn)驗(yà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實(shí)現(xiàn)模擬驗(yàn)證碼發(fā)送的文章就介紹到這了,更多相關(guān)Redis驗(yàn)證碼發(fā)送內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
RabbitMQ+redis+Redisson分布式鎖+seata實(shí)現(xiàn)訂單服務(wù)的流程分析
訂單服務(wù)涉及許多方面,分布式事務(wù),分布式鎖,例如訂單超時(shí)未支付要取消訂單,訂單如何防止重復(fù)提交,如何防止超賣、這里都會(huì)使用到,這篇文章主要介紹了RabbitMQ+redis+Redisson分布式鎖+seata實(shí)現(xiàn)訂單服務(wù)的流程分析,需要的朋友可以參考下2024-07-07
Redis在項(xiàng)目中常見的12種使用場景示例和說明
Redis是一個(gè)開源的高性能鍵值對(duì)數(shù)據(jù)庫,它以其內(nèi)存中數(shù)據(jù)存儲(chǔ)、鍵過期策略、持久化、事務(wù)、豐富的數(shù)據(jù)類型支持以及原子操作等特性,在許多項(xiàng)目中扮演著關(guān)鍵角色,以下是整理的12個(gè)Redis在項(xiàng)目中常見的使用場景舉例說明和解釋2024-06-06

