Jedis操作Redis实现模拟验证码发送功能

目录
      • key
      • string
      • list

    jedis的创建

    1.先启动redis 如果报

    那么说明你redis服务器服务器端还没打开

    //启动服务端
    redis-server /etc/redis.conf
    //启动客户端
    redis-cli

    如果启动成功,就是这样

    2.创建一个maven工程

    导入jedis依赖

    <dependencies>
            <dependency>
                <groupid>redis.clients</groupid>
                <artifactid>jedis</artifactid>
                <version>3.2.0</version>
            </dependency>
        </dependencies>

    3.创建一个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);
        }
    }

    如果是第一次连接会很大概率报错

    这时候有两种方法第一种是关闭防火墙,但是这种不太好,其实只要开放6379端口连接就可以了

    jedis实现模拟验证码

    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.每个手机每天只能发三次,验证码放到redis中,设置过期时间
        public static void verifycode(string phone){
            //连接redis
            jedis jedis = new jedis("172.18.17.215",6379);
            jedis.auth("1052600676");
            //先自定义两个key,从而通过后面步骤给key赋一个value
            //手机发送次数
            string countkey = phone+"count";
            //验证码key
            string codekey = phone + "code";
    
            //每个手机每天只能发送三次
            //通过key查看是否有value
            string count = jedis.get(countkey);
            if (count == null){
                //没有发送次数,说明是第一次发送,那就设置发送次数为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("验证码超过三次,无法发送");
                jedis.close();
                return;
            }
    
            //设置过期时间
            //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();
        }
    
    }

    通过这些操作实现验证码发送

    超过三次

    相关数据类型测试

    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);
    	}

    到此这篇关于jedis操作redis实现模拟验证码发送的文章就介绍到这了,更多相关redis验证码发送内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

    (0)
    上一篇 2022年3月21日
    下一篇 2022年3月21日

    相关推荐