猿创征文 | Redis之 Jedis实例

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

Redis之 Jedis

  • Jedis所需要的jar包
  • 7.2.连接Redis注意事项
  • 链接超时解决方案
  • 8.Jedis_实例

Jedis所需要的jar包

<dependency>
	<groupId>redis.clientsgroupId>
	<artifactId>jedisartifactId>
	<version>3.2.0version>
dependency>

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

    }
}

运行截图
猿创征文 | Redis之 Jedis实例_第1张图片

猿创征文 | Redis之 Jedis实例_第2张图片

你可能感兴趣的:(Java系列,后端,数据库,redis,java,数据库)