您的当前位置:首页正文

Redis作为一个轻量级的数据库使用的Demo

2024-11-24 来源:个人技术集锦

Redis去实现验证码的验证

测试demo-手机验证码
功能的要求
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次
思路:
第一步:生成一个验证码,然后用手机号拼出一个key,再把验证码做value,设置有效期120s;

第二步:通过函数传过来的手机号拼接一个key,去redis中取出value;然后用取出的这个value和用户输入的验证码(函数传进来的那个code)做比较,如果相等,则输出成功,反之,输出失败

第三步:用手机号拼出一个key,若取出的value为null,则为这个手机号第一次发送验证码,然后设置这个key的value为1,时间为24h×60min×60s

/**
 * 功能描述
 *
 * @author: Ocean
 * @date: 2023年06月27日 10:57
 */

import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Random;
import java.util.Set;

public class Demo01 {
    public static void main(String[] args) {

//          1.发送验证码
//        verifyCode("18211828162");
//         2.模拟验证码校验
//        getRedisCode("18211828162","915341");

    }

    //1 生成6位数字验证码
    public static String getCode() {
        Random random = new Random();
        String code = "";
        for(int i=0;i<6;i++) {
            int rand = random.nextInt(10);
            code += rand;
        }
        return code;
    }

    //2 每个手机每天只能发送三次,验证码放到redis中,设置过期时间120
    public static void verifyCode(String phone) {
        //连接redis
        Jedis jedis = new Jedis("127.0.0.1",6379);

        //拼接key
        //手机发送次数key
        String countKey = "VerifyCode"+phone+":count";
        System.out.println("手机发送次数key-countKey:"+countKey);
        //验证码key
        String codeKey = "VerifyCode"+phone+":code";
        System.out.println("验证码key-codeKey:"+codeKey);

        //每个手机每天只能发送三次
        String count = jedis.get(countKey);
        if(count == null) {
            //没有发送次数,第一次发送
            //设置发送次数是1
                       //key,时间,value
            jedis.setex(countKey,24*60*60,"1");
        } else if(Integer.parseInt(count)<=2) {
            //发送次数+1
            jedis.incr(countKey);
        } else if(Integer.parseInt(count)>2) {
            //发送三次,不能再发送
            System.out.println("今天发送次数已经超过三次");
            jedis.close();
        }

        //发送验证码放到redis里面
        String vcode = getCode();
        System.out.println("验证码:"+vcode);
        jedis.setex(codeKey,120,vcode);
        jedis.close();
    }

    //3 验证码校验
    public static void getRedisCode(String phone,String code) {
        //从redis获取验证码
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //验证码key
        String codeKey = "VerifyCode"+phone+":code";
        System.out.println("验证码key-codeKey:"+codeKey);
        String redisCode = jedis.get(codeKey);
        System.out.println("redisCode:"+redisCode);
        //判断
        if(redisCode.equals(code)) {
            System.out.println("成功");
        }else {
            System.out.println("失败");
        }
        jedis.close();
    }
}
显示全文