首页 > 技术文章 > Jedis

juno3550 2021-11-29 22:34 原文


Jedis 简单示例

Jedis 简介

image

示例代码

Maven 依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

测试代码:

// 连接Redis
Jedis jedis = new Jedis("localhost", 6379);
// 操作Redis
jedis.set("name", "xiaoming");
String name = jedis.get("name");
System.out.println(name);
jedis.rpush("list1", "v1", "v2", "v3");
List<String> list = jedis.lrange("list1", 0, -1);
list.forEach(value -> {
    System.out.println(value);
});
// 关闭Redis
jedis.close();

官方 API 文档


Jedis 工具类封装

前面的示例程序还是有点儿小问题,就是 Jedis 对象的管理是我们自己创建的,真实企业开发中是不可能让你去 new 一个的,因此接下来就要做一个工具类。简单来说,就是做一个创建 Jedis 的这样的一个工具。

基于连接池获取连接

  • JedisPool:Jedis 提供的连接池技术
  • poolConfig:连接池配置对象
  • host:redis 服务地址
  • port:redis 服务端口号
// JedisPool 构造方法:
public JedisPool(GenericObjectPoolConfig poolConfig, String host, int port) {
    this(poolConfig, host, port, 2000, (String)null, 0, (String)null);
}

配置文件

创建 jedis 的配置文件:jedis.properties

jedis.host=127.0.0.1
jedis.port=6379
jedis.maxTotal=50
jedis.maxIdle=10

工具类

创建 JedisUtils 工具类,使用静态代码块初始化资源:

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

import java.util.ResourceBundle;

public class JedisUtil {

    private static int maxTotal;
    private static int maxIdel;
    private static String host;
    private static int port;
    private static JedisPoolConfig jpc;
    private static JedisPool jp;

    static {
        // 加载配置文件,获取连接信息
        ResourceBundle bundle = ResourceBundle.getBundle("jedis");
        host = bundle.getString("jedis.host");
        port = Integer.parseInt(bundle.getString("jedis.port"));
        maxTotal = Integer.parseInt(bundle.getString("jedis.maxTotal"));
        maxIdel = Integer.parseInt(bundle.getString("jedis.maxIdle"));
        // Jedis连接池配置
        jpc = new JedisPoolConfig();
        jpc.setMaxTotal(maxTotal);
        jpc.setMaxIdle(maxIdel);
        jp = new JedisPool(jpc, host, port);
    }

    // 对外提供jedis连接对象,连接从连接池获取
    public static Jedis getJedis() {
        Jedis jedis = jp.getResource();
        return jedis;
    }
}

测试代码:

import redis.clients.jedis.Jedis;

public class Demo {

    public static void main(String[] args) {
        Jedis jedis = JedisUtil.getJedis();
        System.out.println(jedis);
    }

}

可视化客户端

Redis Desktop Manager:

image

推荐阅读