• Redis-Jedis


    Redis-Jedis

    1.Jedis所需要的jar包

    <dependency>
       <groupId>redis.clientsgroupId>
       <artifactId>jedisartifactId>
       <version>4.2.0version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    systemctl stop/disable firewalld.service

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

    2.Jedis常用操作

    1.创建maven工程

    image-20220821183845621

    3.Jedis相关API

    1.建立连接

    public class CreatConnection {
        public static void main(String[] args) {
            //连接连接
            Jedis jedis = new Jedis("192.168.79.201",6379);
            //检测连接
            String pong = jedis.ping();
            System.out.println("连接成功:"+pong);
            //关闭连接
            jedis.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.Jedis-API: Key

    public class JedisKey {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.79.201",6379);
            jedis.set("k1", "v1");
            jedis.set("k2", "v2");
            jedis.set("k3", "v3");
            //获取所有的key
            Set<String> keys = jedis.keys("*");
            System.out.println(keys.size());
            System.out.println(keys);
            //key是否存在 true
            System.out.println(jedis.exists("k1"));
            //-1表示永不过期,-2表示已过期 具体的秒数表示剩余过期时间
            System.out.println(jedis.ttl("k1"));
            System.out.println(jedis.get("k1"));
            jedis.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3.Jedis-API: String

    public class JedisString {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.79.201",6379);
            jedis.mset("str1","v1","str2","v2","str3","v3");
            System.out.println(jedis.mget("str1","str2","str3"));
            jedis.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.Jedis-API: List

    public class JedisList {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.79.201",6379);
            jedis.lpush("mylist","张三","王五","李白");
            //按照索引下标获得元素(从左到右)
            //lrange 
            //0左边第一个,-1右边第一个,(0到-1表示获取所有)
            //lrange mylist 0 -1
            //李白, 王五, 张三
            List<String> list = jedis.lrange("mylist",0,-1);
            System.out.println(list);
            for (String element : list) {
                System.out.println(element);
            }
            jedis.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5.Jedis-API: set

    public class JedisSet {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.79.201",6379);
            //将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
            jedis.sadd("orders", "order01");
            jedis.sadd("orders", "order02");
            jedis.sadd("orders", "order03");
            jedis.sadd("orders", "order04");
            jedis.sadd("orders", "order01");
            Set<String> smembers = jedis.smembers("orders");
            //[order02, order03, order04, order01]
            System.out.println(smembers);
            jedis.srem("orders", "order02");
            //[order03, order04, order01]
            System.out.println(jedis.smembers("orders"));
            jedis.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    6.Jedis-API: hash

    public class JedisHash {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.79.201",6379);
            //给集合中的  键赋值
            jedis.hset("hash1","userName","lisi");
            //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);
            //[13810169999, abc@163.com]
            List<String> result = jedis.hmget("hash2", "telphone","email");
            System.out.println(result);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    7.Jedis-API: zset

    /**
     * Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。
     *
     * 不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。
     *
     * 因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。
     *
     * 访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。
     */
    public class JedisZset {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("192.168.79.201",6379);
            //将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
            jedis.zadd("zset01", 100d, "z3");
            jedis.zadd("zset01", 90d, "l4");
            jedis.zadd("zset01", 80d, "w5");
            jedis.zadd("zset01", 700d, "z6");
            //[w5, l4, z3, z6]
            List<String> zrange  = jedis.zrange("zset01", 0, -1);
            System.out.println(zrange);
            jedis.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    4.手机验证码案例

    需求:

    1、输入手机号,点击发送后随机生成6位数字码,2分钟有效

    2、输入验证码,点击验证,返回成功或失败

    3、每个手机号每天只能输入3次

    image-20220821184646866

    /**
     * 1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
     * 2、输入验证码,点击验证,返回成功或失败
     * 3、每个手机号每天只能输入3次
     */
    public class JedisVerificationCodeDemo {
        public static void main(String[] args) {
            //模拟验证码发送
            verifyCode("13678765435");
    
            //模拟验证码校验
            getRedisCode("13678765435","4444");
    
        }
    
    
        /**
         * 生成验证码
         * @param phone
         */
        private static void verifyCode(String phone) {
            Jedis jedis = new Jedis("192.168.79.201", 6379);
            String countKey = "verifyCode" + phone + ":count";
            String count = jedis.get(countKey);
            if (count == null || "".equals(count)) {
                jedis.setex(countKey,24*60*60,"1");
            }else if(Integer.parseInt(count)<=2){
                //+1
                jedis.incr(countKey);
            }else if(Integer.parseInt(count)>2) {
                jedis.close();
                throw new RuntimeException("今天的发送次数已经超过三次");
            }
            //生成6位的验证码
            String code = RandomUtils.getSixBitRandom();
            System.out.println("生成验证码:"+code);
            String codeKey = "verifyCode" + phone + ":code";
            //设置验证码两分钟有效
            jedis.setex(codeKey,120,code);
            jedis.close();
        }
    
        /**
         * 校验验证码
         * @param phone
         * @param code
         */
        private static void getRedisCode(String phone,String code) {
            //从redis获取验证码
            Jedis jedis = new Jedis("192.168.79.201",6379);
            //验证码key
            String codeKey = "verifyCode"+phone+":code";
            String redisCode = jedis.get(codeKey);
            //判断
            if(redisCode.equals(code)) {
                System.out.println("成功");
            }else {
                System.out.println("失败");
            }
            jedis.close();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    生成验证码工具类

    /**
     * 生成四位和六位的随机数字
     */
    public class RandomUtils {
    
       private static final Random random = new Random();
    
       private static final DecimalFormat fourdf = new DecimalFormat("0000");
    
       private static final DecimalFormat sixdf = new DecimalFormat("000000");
    
       public static String getFourBitRandom() {
          return fourdf.format(random.nextInt(10000));
       }
    
       public static String getSixBitRandom() {
          return sixdf.format(random.nextInt(1000000));
       }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    HTTP网络协议讲解
    R语言ggplot2可视化:使用ggpubr包的ggdensity函数可视化密度图、使用fill参数自定义密度图的填充色
    pk答题小程序怎么做?功能有哪些?为您揭秘!
    git初识
    [spark]排序
    基础课11——数据来源
    零售商贩mysql表设计:banner管理表
    How NeRFs and 3D Gaussian Splatting areReshaping SLAM: a Survey
    【发福利啦!】畅享上百万卡时NPU普惠算力,启智与昇思MindSpore社区联合推出算力支持计划
    HR问:有没有免费的人才测评工具?
  • 原文地址:https://blog.csdn.net/qq_44981526/article/details/126454018