使用Jedis操作Redis

379 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

1.Jedis快速入门

Jedis的使用步骤很简单:

  1. 引入Jedis依赖
  2. 创建Jedis对象。这个对象用来设置Jedis的连接信息,如Jedis所在服务器IP地址和端口号,如果你的Redis设置了密码,也可以用过Jedis对象指定密码,当然,你也可以使用Jedis指定你要使用Redis中哪个库
  3. 使用Jedis。你如果熟悉Redis的基础命令,那么你会发现你是用的Jedis对象所调用的方法和Redis的命令是几乎一样的
  4. 释放资源

1.1 引入依赖

这是Jedis的官网,可以在这里找到最新的Jedis依赖。 首先创建一个Maven项目,然后在pom文件里面引入依赖。

<dependencies>
    <!--jedis-->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.7.0</version>
    </dependency>
    <!--单元测试-->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

1.2 建立连接

我们在新创建的maven项目里面,测试使用Jedis。下面的代码分成了3个部分,分别是创建Jedis对象并设置相应参数,接着是测试能否使用Jedis操作Redis,最后是释放资源。

Jedis的使用方式很简单,建立连接和释放资源的步骤是固定的,大家参考下面的代码即可。关键在于如何往Redis里面插入数据和取出数据

我们在Redis中使用String数据结构的时候,是这么写的

set name "老王"
get name

而是用Jedis,我们存取String数据结构数据的方式如下的testString方法所示。你会发现Jedis操作数据的方法和Redis命令名几乎一样。

public class JedisTest {

    private Jedis jedis;

    @BeforeEach
    void  setUp() {
        //1.建立连接 redis所在服务器ip和端口号
        jedis = new Jedis("192.168.182.135",6379);
        //2.设置密码(如果你设置了密码)
        jedis.auth("123321");
        //3.选择库
        jedis.select(0);
    }

    @Test
    void testString() {
        //存入数据
        String result = jedis.set("name", "老王");
        System.out.println("result = " + result);//result = OK
        //获取数据
        String name = jedis.get("name");
        System.out.println("name = " + name);//name = 老王
    }

    @Test
    void testHash() {
        //插入hash数据
        jedis.hset("user:1","name","Jack");
        jedis.hset("user:1","age","21");

        //获取
        Map<String, String> map = jedis.hgetAll("user:1");
        System.out.println(map);//{name=Jack, age=21}
    }

    @AfterEach
    void testDown() {
        if (jedis != null) {
            jedis.close();
        }
    }

}

2. Jedis的连接池

我们为什么要使用Jedis的连接池呢?因为Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们需要使用Jedis连接池来代替Jedis直连的方式

为了创建出连接池,继而从连接池里获取Jedis对象,我们创建了下面的工具类。

public class JedisConnectionFactory {
    //定义连接池对象
    private static final JedisPool jedisPool;

    static {
        //配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //最大连接数
        poolConfig.setMaxTotal(8);
        //最大空闲连接
        poolConfig.setMaxIdle(8);
        //最小空闲连接,过段时间后一直没人连接,空闲连接释放
        poolConfig.setMinIdle(0);
        //如果没有连接,要不要等待,这里设置等待1000毫秒。如果值是-1那就会一直等待
        poolConfig.setMaxWaitMillis(1000);

        //创建连接池对象
        jedisPool = new JedisPool(poolConfig,"192.168.182.135",6379,1000,"123321");
    }

    public static Jedis getJedis() {
        return jedisPool.getResource();
    }

}

测试使用,将标题一里的代码略微修改即可

@BeforeEach
void  setUp() {
    //1.建立连接 redis所在服务器ip和端口号
    //jedis = new Jedis("192.168.182.135",6379);
    jedis = JedisConnectionFactory.getJedis();
    //2.设置密码(如果你设置了密码)
    jedis.auth("123321");
    //3.选择库
    jedis.select(0);
}