Redis( 基础篇 ==> Jedis入门 & Jedis连接池

本章导学:

  • 什么是Jedis?
  • Jedis入门案例
    • 新建项目,导入依赖
    • 建立连接
    • 进行测试
    • 释放资源
  • Jedis的连接池使用

一、什么是Jedis

Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。

但是,Jedis的实例不是I线程安全的,我们还需要使用Jedis连接池来为我们创建一些安全可靠的实例

二、Jedis入门案例 

2.1、新建项目并导入依赖

 新建一个SpringBoot项目或一般的Maven项目都可以,在pom.xml导入Jedis依赖和pool连接池

        <!-- redis相关 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.7.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

2.2、建立连接

    @BeforeEach
    void setUp(){
        //1,建立连接,传入虚拟机的IP地址和端口号
        jedis = new Jedis("192.168.75.128",6379);
        //2,设置密码
        jedis.auth("124856");
        //3,选择数据库
        jedis.select(1);
    }
@BeforeAll修饰在方法上,使用该注解的方法在当前整个测试类中所有的测试方法之前执行,每个测试类运行时只会执行一次。

2.3、进行测试 

Jedis的方法名与Redis的命令一毛一样,非常方便~

这里测试一个String类型的命令和HASH类型的命令

    @Test
    void testString(){
        String result = jedis.set("username", "brrbaii");
        System.out.println("result:" + result);
        String username = jedis.get("username");
        System.out.println("name:" + username);
    }

    @Test
    void testHash(){
        jedis.hset("brrbaii:user:1", "name", "baibai");
        Map<String, String> map = jedis.hgetAll("brrbaii:user:1");
        System.out.println(map);
    }

运行结果: 

2.4、释放资源

    @AfterEach
    void tearDown(){
        if (jedis != null){
            jedis.close();
        }
    }
@AfterAll修饰在方法上,与@BeforeAll对应,使用该注解的方法在当前测试类中所有测试方法都执行完毕后执行的,每个测试类运行时只会执行一次。

完整测试代码如下

package com.brrbaii;
import com.brrbaii.util.JedisConnectionFactory;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;
import java.util.Map;


@SpringBootTest
public class redisTest {
    private Jedis jedis;

    @BeforeEach
    void setUp(){
        //1,建立连接,传入虚拟机的IP地址和端口号
        jedis = new Jedis("192.168.75.128",6379);
        //2,设置密码
        jedis.auth("124856");
        //3,选择数据库
        jedis.select(1);
    }

    @Test
    void testString(){
        String result = jedis.set("username", "brrbaii");
        System.out.println("result:" + result);
        String username = jedis.get("username");
        System.out.println("name:" + username);
    }

    @Test
    void testHash(){
        jedis.hset("brrbaii:user:1", "name", "baibai");
        Map<String, String> map = jedis.hgetAll("brrbaii:user:1");
        System.out.println(map);
    }

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

三、Jedis连接池的使用

Jedis的实例不是线程安全的,而且频繁创建和销毁连接损耗性能,所以需要使用Jedis连接池来代替Jedis直连

我们定义一个静态工厂JedisConnectionFactory

然后直接CV

package com.brrbaii.util;

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

public class JedisConnectionFactory {
    private static final JedisPool jedisPool;

    static {
        //配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //最大连接数
        poolConfig.setMaxTotal(8);
        //最大空闲连接
        poolConfig.setMaxIdle(8);
        //最小空闲连接
        poolConfig.setMinIdle(0);
        //最长等待时间,ms
        poolConfig.setMaxWaitMillis(1000);
        //创建连接池对象
        jedisPool = new JedisPool(poolConfig,"192.168.75.128",6379,1000,"124856");
    }

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

接下来回到我们的测试方法里,修改Jedis连接方式

完事~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值