Redis:Jedis操作与实例(模拟验证码发送)

连接:

1.导入依赖

    <dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.6.1</version>
        </dependency>
    </dependencies>

 2.进行测试链接

    public static void main(String[] args) {
        //创建jedis的对象
        Jedis jedis = new Jedis("120.48.39.100",6379);
        jedis.auth("password");
        //测试
        String a = jedis.ping();
        System.out.println(a);
    }
}

 链接redis的注意事项

禁用Linux的防火墙:Linux(CentOS7)里执行命令

systemctl stop/disable firewalld.service   

redis.conf中注释掉bind 127.0.0.1 ,然后 protected-mode no

测试相关数据类型

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

 

    @Test
    public void textStirng(){
        Jedis jedis = new Jedis("120.48.39.100",6379);
        jedis.auth("password");
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
        for(String a : keys){
            System.out.println(a);
        }

 String

jedis.mset("str1","v1","str2","v2","str3","v3");
System.out.println(jedis.mget("str1","str2","str3"));
    @Test
    public void testList(){
        Jedis jedis2 = new Jedis("120.48.39.100",6379);
        jedis2.auth("password");
        jedis2.mset("key1","v1","key2","v2");
        List<String> mget = jedis2.mget("key1", "key2");
        System.out.println(mget);
    }

 

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

实例(模拟验证码发送)

要求:

1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次

package com.tinstu.redis;

import redis.clients.jedis.Jedis;

import java.util.Random;

public class PhoneCode {
    public static void main(String[] args) {
    //模拟验证码发送
        verifyCode("15999999999");
        //模拟校验验证码
        //getRedisCode("15999999999","269489");
    }

    //生成随机6位验证码
    public static String getCode(){
        Random random = new Random();
        String code = "";
        for(int i=0;i<6;i++){
            int i1 = random.nextInt(10);
            code += i1;
        }
        return code;
    }
    //让每个手机每天只能发送三次,验证码方法放在redis中,设置过期时间
    public static void verifyCode(String phone){
        Jedis jedis = new Jedis("120.48.39.100",6379);
        jedis.auth("123456li");
        //拼接key
        //手机发送次数
        String countKey = "VerifyVode"+phone+":count";
        //验证码
        String codeKey = "VerifyVode"+phone+":code";

        //每个手机每天只能发送三次
        String count = jedis.get(countKey);
        if(count == null){
            //没有发送次数,第一次发送,设置发送次数为1
            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();
            return;
        }
        //把验证码放到redis中
        String vcode = getCode();
        jedis.setex(codeKey,120,vcode);
        jedis.close();
    }
    //验证码校验
    public static void getRedisCode(String phone,String code){
        //从redis获取验证码
        Jedis jedis = new Jedis("120.48.39.100",6379);
        jedis.auth("123456li");
        String codeKey = "VerifyVode"+phone+":code";
        String rediscode = jedis.get(codeKey);
        if(rediscode.equals(code)){
            System.out.println("成功");
        }else{
            System.out.println("失败");
        }
    }
}

 

 

阅读剩余
THE END