Jedis操作Redis6

Jedis操作Redis6

1. IDEA连接远程的Redis

Jedis是一个java的模块,用来连接和操作我们的Redis数据库。类似于以前我们用我们的jdbc操作我们的mysql数据库。

开始前,我们先要把redis的配置文件修改一下:
把bind 127.0.0.1 去掉,并且把protected-mode改为no。
在这里插入图片描述
然后我们还得关闭我们的防火墙:
可以先通过以下命令查看防火墙的状态。

systemctl status firewalld

如果显示开启,那么我们得关闭防火墙,否则java连接Redis会超时并报错。(如果他的active是running就证明防火墙开着)
在这里插入图片描述
关闭防火墙的命令如下:

systemctl stop firewalld

此时我们再看防火墙的状态,显示的是dead(死亡)。也就是关闭了。
在这里插入图片描述
为了确保我们的Redis可以连上,我们最好就是把Redis服务器先关了,再打开。

然后我们新建一个Maven工程。导入我们的依赖:

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

然后我们就可以用java来操作我们的Redis数据库啦。
我们现在主程序连接一下我们的Redis数据库看看。

import redis.clients.jedis.Jedis;

public class RedisDemo {
    public static void main(String[] args) {
        //创建Jedis对象(传入的两个参数分别是Redis所在服务器ip地址和端口号)
        Jedis jedis = new Jedis("119.91.153.74",6379);
        //测试是否连上
        System.out.println(jedis.ping());
    }
}

如果显示PONG,那么就证明连接成功了。
在这里插入图片描述

2. 各种命令操作

这个其实很简单,掌握了Redis命令的使用,基本上就等于掌握了Jedis方法的使用。
比如对keys的操作:
在这里插入图片描述
在Jedis中,对应的方法就是:

@Test
public void demo(){
    jedis.set("name","Tom");
    //keys *
    System.out.println(jedis.keys("*"));
    //exists key
    System.out.println(jedis.exists("name"));
    //type key
    System.out.println(jedis.type("name"));
    //其他的用法相同,这里不做过多代码介绍
}

我们常见的还有字符串的操作:
在这里插入图片描述
在这里插入图片描述

对应的方法也是一样的:

    @Test
    public void demo1(){
        jedis.mset("age","18", "address", "北京");
        System.out.println(jedis.mget("age","name","address"));
    }

运行结果:
在这里插入图片描述
其他的例如List、Hash、Set、Zset其实也都一样,方法名跟命令一样,参数的位置也一样。最终实现的效果也一样。这里就不一一演示了。

如果想知道这几个基本的数据类型都有哪些命令,可以看一下我的这篇博客——Redis各数据类型的常用命令操作

3. 模拟验证码发送

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

解题思路如下:
在这里插入图片描述
代码直接提供,页面就不写了。自己在main程序中通过getVerifyCode(phone);方法通过手机号向服务器请求验证码,通过queryCode(phone, “572113”);验证验证码即可。(验证验证码的时候,记得把main程序中的getVerifyCode(phone)方法注释掉。

import redis.clients.jedis.Jedis;

import java.util.Random;

public class PhoneCode {
    public static void main(String[] args) {
        String phone = "13579246810";
        //模拟验证码的发送
        getVerifyCode(phone);
        //模拟验证码的验证
        //queryCode(phone, "572113");
    }

    //1、生成6位验证码
    public static String getCode(){
        StringBuilder sb = new StringBuilder();
        Random random = new Random();
        for(int i = 0; i < 6; i++){
            int num = random.nextInt(10);
            sb.append(num);
        }
        return sb.toString();
    }

    //2、每个手机只能发送3次,验证码放到redis中,设置过期时间
    public static void getVerifyCode(String phone){
        //创建Jedis对象
        Jedis jedis = new Jedis("119.91.153.74",6379);
        /**拼接key**/
        //发送次数的key
        String countKey = phone+":count";
        //验证码的key
        String codeKey = phone+":code";
        //获取次数
        String phoneCount = jedis.get(countKey);

        //发送次数验证和响应
        if(phoneCount == null){
            //第一次发送,设置过期时间为24小时,值为1
            jedis.setex(countKey, 24*60*60, "1");
        }else if(Integer.parseInt(phoneCount) <= 2){
            //次数小于等于2,自增1
            jedis.incr(countKey);
        }else if(Integer.parseInt(phoneCount) >= 3){
            //已经发送3次
            System.out.println("今天发送次数超过3次");
            jedis.close();
            return;
        }

        //验证码
        String code = getCode();
        jedis.setex(codeKey, 120, code);
        jedis.close();
    }

    //3、验证码的校验
    public static void queryCode(String phone, String code){
        //创建Jedis对象
        Jedis jedis = new Jedis("119.91.153.74",6379);
        String vCode = jedis.get(phone+":code");
        if(code.equals(vCode)){
            System.out.println("验证通过");
        }else {
            System.out.println("验证码错误");
        }
        jedis.close();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值