Jedis操作Redis、Jedis连接池工具类

Jedis的介绍

​ Redis不仅可以使用命令来操作,现在基本上主流的语言都有API支持,比如Java、C#、C++、PHP、Node.js、Go等。在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等其中官方推荐使用Jedis和Redisson。

使用Jedis需要导入jar包

在这里插入图片描述
链接:https://pan.baidu.com/s/1zuVLD-8VO6v08dCMF8TfyA
提取码:xe81
复制这段内容后打开百度网盘手机App,操作更方便哦

Jedis类常用方法

注:每个方法就是redis中的命令名,方法的参数就是命令的参数。每个Jedis对象似于JDBC中Connection对象。
在这里插入图片描述

具体命令可以去看我的另一篇文章:Redis概述与常用命令
https://blog.csdn.net/RookiexiaoMu_a/article/details/89609874

案例:使用Jedis上面的方法来访问Redis,向服务器中写入字符串和list类型,并且取出打印控制台上。

import redis.clients.jedis.Jedis;

import java.util.List;

/*
使用Jedis的方法来访问Redis,向服务器中写入字符串和list类型,并且取出打印控制台上
 */
public class Demo1 {
    
    

    public static void main(String[] args) {
    
    
        //1. 创建连接Jedis
        //参数:主机名或IP地址, 端口号
        Jedis jedis = new Jedis("localhost", 6379);
        //2. 通过jedis对象中方法向服务器写入字符串的类型
        jedis.set("person","张三");
        //3. 通过jedis对象中方法向服务器写入list的类型
        jedis.lpush("cities","广州","上海","东莞");
        //4. 通过方法取出字符串和list打印
        String person = jedis.get("person");
        List<String> cities = jedis.lrange("cities", 0, -1);
        System.out.println(person);
        System.out.println(cities);
        //5. 关闭jedis连接
        jedis.close();
    }
}

Jedis连接池的基本概念

在这里插入图片描述
jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的连接池技术,jedis连接池在创建时初始化一些连接对象存储到连接池中,使用jedis连接资源时不需要自己创建jedis对象,而是从连接池中获取一个资源进行redis的操作。使用完毕后,不需要销毁该jedis连接资源,而是将该资源归还给连接池,供其他请求使用。

Jedis连接池API

在这里插入图片描述
案例:使用连接池优化jedis操作,从连接池中得到一个创建好的Jeids对象,并且使用这个Jedis对象。向Redis数据库写入一个set集合,并且取出集合。打印到控制台,并且查看数据库中信息。

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

import java.util.Set;

/*
1. 使用连接池优化jedis操作,从连接池中得到一个创建好的Jeids对象,并且使用这个Jedis对象。
2. 向Redis数据库写入一个set集合,并且取出集合。打印到控制台,并且查看数据库中信息。
 */
public class Demo2 {
    
    

    public static void main(String[] args) {
    
    
        //1. 创建配置对象,指定2个参数:最大连接数,最长等待时间
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(10);
        config.setMaxWaitMillis(2000);  //毫秒
        //2. 创建连接池:指定3个参数:上面的配置对象,主机名,端口号
        JedisPool pool = new JedisPool(config, "localhost", 6379);
        //3. 从连接池中得到连接Jedis对象: getResource()
        Jedis jedis = pool.getResource();

        //4. 向redis中写入一个set集合: sadd
        jedis.sadd("students","白骨精","孙悟空","猪八戒");
        //5. 从redis中取出这个set集合打印出来: smembers
        Set<String> students = jedis.smembers("students");
        System.out.println(students);
        //6. 关闭jedis
        jedis.close();
    }

}

ResourceBundle类

使用ResourceBundle 读取配置文件
在这里插入图片描述

//1. 得到ResourceBundle类
ResourceBundle bundle = ResourceBundle.getBundle("jedis");
//2. 调用getString("键")得到值
String host = bundle.getString("host");

案例:编写jedis连接池工具类

编写步骤:

  1. 使用ResourceBundle 读取配置文件
  2. 创建Jedis连接池配置对象 并且指定参数
  3. 创建连接池对象
  4. 编写获取Jedis对象的方法

JedisUtils.java

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

import java.util.ResourceBundle;

/*
工具类:
1. 简化得到连接代码
2. 修改配置更加方便
 */
public class JedisUtils {
    
    

    //定义成全局的变量
    private static JedisPool pool;

    //在类加载的时候就创建连接池
    static  {
    
    
        //读取所有的配置参数
        ResourceBundle bundle = ResourceBundle.getBundle("jedis");
        String host = bundle.getString("host");
        int maxTotal = Integer.parseInt(bundle.getString("maxTotal"));
        int maxWaitMillis = Integer.parseInt(bundle.getString("maxWaitMillis"));
        int port = Integer.parseInt(bundle.getString("port"));

        //1. 创建配置对象,指定2个参数:最大连接数,最长等待时间
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(maxTotal);
        config.setMaxWaitMillis(maxWaitMillis);  //毫秒
        //2. 创建连接池:指定3个参数:上面的配置对象,主机名,端口号
        pool = new JedisPool(config, host, port);
    }

    /**
     得到连接对象
     @return
     */
    public static Jedis getJedis() {
    
    
        //3. 从连接池中得到连接Jedis对象: getResource()
        return pool.getResource();
    }
}

猜你喜欢

转载自blog.csdn.net/RookiexiaoMu_a/article/details/89614277