Jedis操作Redis数据库

使用jedis链接redis之前,我们先需要修改一下redis的配置文件。注释掉bind:127.0.0.1。修改完成保存退出,启动redis服务。

1.接下来创建一个普通的maven项目,引入jidis的依赖。

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>3.2.0</version>
   <type>jar</type>
   <scope>compile</scope>
</dependency> 
然后创建一个测试类进行链接,代码如下:

 

public class MyJedisTest {
    public static void main(String[] args) {
         //1.构造一个 Jedis 对象,因为这里使用的默认端口 6379,所以不用配置端口,当然也指定端口号。
        Jedis jedis = new Jedis("192.168.1.11");
        //Jedis jedis1 = new Jedis("192.168.1.5", 6379);
        //2.密码认证
        jedis.auth("123456");
        String ping = jedis.ping();
        System.out.println(ping);
        String isOk = jedis.set("k1", "abc");
    }
}

jedis中的方法与客户端的命令基本类似,非常方便记忆。

2.jedis连接池。

在实际应用中,Jedis 实例我们一般都是通过连接池来获取,由于 Jedis 对象不是线城安全的,所以,当
我们使用 Jedis 对象时,从连接池获取 Jedis,使用完成之后,再还给连接池。
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class JedisPoolTest {
 public static void main(String[] args) {
    Jedis jedis = null;
    //1. 构造一个 Jedis 连接池
    JedisPool pool = new JedisPool("192.168.1.11", 6379);
    //2. 从连接池中获取一个 Jedis 连接
    jedis = pool.getResource();
    jedis.auth("123456");
    try {
      //3. Jedis 操作
      String ping = jedis.ping();
      System.out.println(ping);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      //4. 归还连接
      if (jedis != null) {
        jedis.close();
      }
    }
  }
}

上段代码比较繁琐,我们利用 JDK1.7 中的 try-with-resource 特性,可以对上面的代码进行改造。

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class JedisPoolTest {
  public static void main(String[] args) {
    JedisPool pool = new JedisPool("192.168.1.11");
    try(Jedis jedis = pool.getResource()) {
      jedis.auth("123456");
      String ping = jedis.ping();
      System.out.println(ping);
    }
  }
}

实际开发过程中,我们还需要根据上述代码来进一步封装。

首先,我们新建一个接口,调用的时候实现这个接口。

public interface CallWithJedis {
    void call(Jedis jedis);
}

 

 然后创建一个Redis类,

public class Redis {
    private JedisPool pool;
    public Redis() {
        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
        //连接池最大空闲数
        config.setMaxIdle(300);
        //最大连接数
        config.setMaxTotal(1000);
        //连接最大等待时间,如果是 -1 表示没有限制
        config.setMaxWaitMillis(30000);
        //在空闲时检查有效性
        config.setTestOnBorrow(true);
        /**
         * 1. Redis 地址
         * 2. Redis 端口
         * 3. 连接超时时间
         * 4. 密码
         */
        pool = new JedisPool(config, "192.168.1.11", 6379, 30000, "123456");
   }
    public void execute(CallWithJedis callWithJedis) {
        try (Jedis jedis = pool.getResource()) {
            callWithJedis.call(jedis);
       }
   }
}    

当我们需要redis操作时,直接先New一个Redis对象,然后执行execute方法,redis的相关操作直接在方法内部执行即可,执行完毕将连接归还连接池。

Redis redis = new Redis();
redis.execute(jedis -> {
    //进行redis相关操作
    System.out.println(jedis.ping());
});

 关于Jedis的介绍就先到这里,本篇内容的介绍基于公众号江南一点雨的视频课程进行总结的,大家有兴趣的话可以关注一下。

posted @ 2020-09-07 22:56  天有多高我有多骚  阅读(212)  评论(0)    收藏  举报