• 猿创征文 | Redis之 Jedis实例


    前言
    👏作者简介:我是笑霸final,一名热爱技术的在校学生。
    📝个人主页:个人主页1 || 笑霸final的主页2
    📕系列专栏:本文写在java专栏 | | 后端专栏
    📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏

    Jedis所需要的jar包

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

    7.2.连接Redis注意事项

    禁用Linux的防火墙:Linux(CentOS7)里执行命令
    systemctl stop/disable firewalld.service
    redis.conf中注释掉bind 127.0.0.1 ,然后 protected-mode no

    链接超时解决方案

    1.注释掉 bind 127.0.0.1
    可以在 vim redis.conf 后进入指令模式(shift +:)
    然后输入:/单词
    快速找到单词的位置
    == 2.修改protected-mode==
    在 redis.conf 中找到 protected-mode 将后面的 yes 改为 no
    == 3.修改daemonize==
    在 redis.conf 中找到 daemonize 将后面的 no 改为 yes
    4.修改密码(requirepass foobared)
    在 redis.conf 中找到 requirepass foobared ,可在下面添加 requirepass 你的密码
    执行完以上操作后进入指令模式 wq 保存退出
    5云服务器记得在安全组开放端口 有宝塔得宝塔也要开放端口

    二、重启redis
    1.关闭redis
    在 redis-cli 所在的目录下输入: redis-cli -a 密码
    进入到 redis 指令模式,输入: shutdown
    然后再输入: exit
    2.启动redis
    在 redis-server 所在的目录下输入: redis-server redis.conf所在目录/redis.conf
    可以通过指令 ps aux | grep redis 查看redis状态
    开放端口:
    firewall-cmd --add-port=6379/tcp --permanent
    重启防火墙生效

    8.Jedis_实例

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

    思考:

    • =思路==
      * 1.随机密码可以用random
      * 验证码2分钟有效可以把验证码放入redis 设置过期时间120
      * 2.验证问题可以比较redis和输入比较
      * 3.每个手机号每天只能输入三次
      * 用incr 每次发送后+1 大于2时就不能发送了
      */

    代码:

    package com.xbfinal.jedis;
    
    import redis.clients.jedis.Jedis;
    import java.util.Random;
    
    /**
     * @autor 笑霸fianl~
     * 欢迎访问GitHub:https://github.com/XBfinal
     * 欢迎访问Gitee:https://gitee.com/XBfianl
     * 欢迎访问CSDN:https://blog.csdn.net/weixin_52062043
     */
    public class PhoneCode {
        /**
         *  ============模拟手机验证码发送========
         *  1.输入手机号 生成6位验证码,2分钟有效
         *  2.输入验证码,验证
         *  3.每个手机号每天只能输入三次
         */
    
        /**
         * =============思路==============
         *  1.随机密码可以用random
         * 验证码2分钟有效可以把验证码放入redis 设置过期时间120
         *  2.验证问题可以比较redis和输入比较
         *  3.每个手机号每天只能输入三次
         *      用incr 每次发送后+1 大于2时就不能发送了
         */
    
        public static void main(String[] args) {
    
    
            for(int i=0;i<4;i++){
                  System.out.println("第"+(i+1)+"次执行得结果:");
                //输入手机号
                final String Code = verifyCode("13555555557");
                //验证
                getRedisCode("13555555557","111111");
                getRedisCode("13555555557",Code);
                System.out.println("===========================");
            }
    
    
    
        }
    
        /**
         * 生成6位数字验证码
         */
        public static String getCode(){
            final Random random = new Random();
            //直接生成6位数
            final int i = 100000+random.nextInt(1000001-100000);
           // String code=i+"";
            return  Integer.toString(i);
    
        }
        /**
         * 验证码2分钟有效可以把验证码放入redis
         * 设置过期时间120每个手机号每天只能输入三次
         */
        public static String verifyCode(String phone){
            //1.链接redis
            final Jedis jedis = new Jedis("xxx.xxx.xxx.xxx",6379);//需要redis得host和端口号
            final String auth = jedis.auth("xxxx");//输入密码没设置密码就不用这一步
            /**
             * 拼接 key
             * 手机发送次数key
             * 验证码key
             */
            //手机发送次数key
            String countKey="verifyCode"+phone+":count";
            //验证码key
            String codeKey="verifyCode"+phone+":code";
            //每个手机号每天只能输入三次
            final String count = jedis.get(countKey);
            if(count==null){
                //说明没有发送过,就设置
                jedis.setex(countKey,24*62*62,"1");
            }else if(Integer.parseInt(count) <=2){
                //说明没有超过3次 发送次数加1
                jedis.incr(countKey);
    
            }else{
                //已经发送三次 不能发送了
                System.out.println("今天发送次数 超过3次  明天再来吧");
                jedis.close();
            }
            //发送得验证码 放入 redis
            final String vcode = getCode();
            jedis.setex(codeKey,2*60,vcode);
            System.out.println("输入手机号时得验证码:"+vcode);
            jedis.close();//关闭链接
            return vcode;
        }
    
        /**验证 验证码
         *
         * @param phone
         * @param code
         */
        public static void getRedisCode(String phone,String code){
            //手机发送次数key
            String countKey="verifyCode"+phone+":count";
            //验证码key
            String codeKey="verifyCode"+phone+":code";
            //从redis获取验证码
            final Jedis jedis = new Jedis("101.200.230.213",6379);//需要redis得host和端口号
            final String auth = jedis.auth("0615");//输入密码
    
            final 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
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120

    运行截图
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    如何缓解压力、拒绝内耗【1】
    通过Frp解决实现内网穿透
    常用彩色模型及转换
    关于一些网络的概述
    MySQL读取的记录和我想象的不一致——事物隔离级别和MVCC
    Kotlin协程:flowOn与线程切换
    Java on VS Code 十月更新|调试体验提升与编码体验改进:虚拟线程支持、Lombok 快捷代码操作及其他
    耳机不怕丢,Belkin最新降噪耳机支持苹果 Find My
    jvm监控服务性能、以及资源使用情况
    有关JWT的面试问题总结
  • 原文地址:https://blog.csdn.net/weixin_52062043/article/details/126630018