如何使用Java redis实现发送手机验证码功能
要求:
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次
代码如下
importredis.clients.jedis.Jedis;
importjava.util.Random;
publicclassValidationTest{
publicstaticvoidmain(String[]args){
//getValidation("15005076571");
//checkValidation("769897","15005076571");
}
staticvoidgetValidation(Stringtel){
//主机、端口
Jedisjedis=newJedis("myhost",6379);
//密码
jedis.auth("mypassword");
try{
//获取电话号码
StringphoneNo=tel;
//本人用1库进行测试
jedis.select(1);
StringcountKey=phoneNo+":count";
StringcodeKey=phoneNo+":code";
//获取指定的电话号码发送的验证码次数
Stringcnt=jedis.get(countKey);
//对次数进行判断
if(cnt==null){
//没有发送过验证码
jedis.setex(countKey,60*60*24,"1");
//发送验证码,假设生成的验证码
StringBuffercode=newStringBuffer();
for(inti=0;i<6;i++){
code.append(newRandom().nextInt(10));
}
System.out.println("code:"+code);
//缓存中添加验证码
jedis.setex(codeKey,60*2,code.toString());
}else{
if(Integer.parseInt(cnt)<3){
//发送验证码,假设生成的验证码
StringBuffercode=newStringBuffer();
for(inti=0;i<6;i++){
code.append(newRandom().nextInt(10));
}
System.out.println("code:"+code);
//缓存中添加验证码
jedis.setex(codeKey,60*2,code.toString());
//递增手机发送数量
jedis.incr(countKey);
}else{
//返回超出3次,禁止发送
System.out.println("超出3次,禁止发送");
}
}
}catch(Exceptione){
//这边其实是需要回滚下redis
e.printStackTrace();
}finally{
//关闭redis
if(jedis!=null){
jedis.close();
}
}
}
staticvoidcheckValidation(Stringcode,Stringtel){
Jedisjedis=null;
try{
jedis=newJedis("myhost",6379);
//密码
jedis.auth("mypassword");
jedis.select(1);
StringcodeKey=tel+":code";
Stringvalidation=jedis.get(codeKey);
if(validation==null){
System.out.println("验证码未发送或者失效");
}else{
if(validation.equals(code)){
System.out.println("验证成功");
}else{
System.out.println("验证失败");
}
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(jedis!=null){
jedis.close();
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。