首页 > 数据库 >Redis 的Java客户端——Jedis连接池的使用详解

Redis 的Java客户端——Jedis连接池的使用详解

时间:2023-03-08 23:32:24浏览次数:39  
标签:poolConfig Java name Redis Jedis jedis 连接池

一.Redis 的Java客户端

jedis的官方仓库地址:

https://github.com/redis/jedis

Redis 数据结构

Redis 是一个 key-value 的数据库,key 一般是 String 类型,不过 value 的类型多种多样。

image-20230305154224080

1.1 引入Redis依赖

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

建立一个单元测试: image-20230308095245687

建立jedis链接,因为我的redis没有设置密码,所以注释掉了。

    @BeforeEach
    void setUp(){
        jedis=new Jedis("127.0.0.1",6379);
//        jedis.auth("123321");
        jedis.select(0);
    }

junit测试:

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

JUnit5 @AfterEach 注解替换了 JUnit4 中的@After注解。它用于表示应在当前类中的每个@Test方法之后执行注解方法。

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

执行结果:

image-20230308095552472

到RESP里检查:

image-20230308095606586

RESP配置:RESP配置非常的简单:

如下:

image-20230308095654463

1.2 Hash例子

插入一个Hash例子:

    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);
    }

运行结果:

image-20230308104731045

到RESP里查看:

image-20230308104755953

1.3 Redis使用步骤总结

Jedis基本使用步骤:

1.引入依赖

2.创建 Jedis 对象, 建立连接

3.使用 Jedis, 方法名与 Red is 命令一致

4.释放资源

二.Jedis连接池

Jedis 本身是线程不安全的, 并且频繁的创建和销毁连接会有性能损耗, 因此我们推荐大家使用 Jedis 连接池代替 Jedis 的直连方式。

新建立一个Jedis连接池,如下:

image-20230308122128390

public class JedisConnectionFacory {
    private static final JedisPool jedisPool;

    static {
//        配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(8); //最大连接数
        poolConfig.setMaxIdle(8);//预备连接数
        poolConfig.setMinIdle(0);//最小连接数
        poolConfig.setMaxWaitMillis(1000);//等待时间
//        创建连接池对象
        jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379,1000);
    }
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

最大连接数:

poolConfig.setMaxTotal(8);

预备连接数:

poolConfig.setMaxIdle(8);

最小连接数:

poolConfig.setMinIdle(0);

将上面的单元测试,连接的池改为前面的Jedis连接池。

//        jedis=new Jedis("127.0.0.1",6379);
        jedis= JedisConnectionFacory.getJedis();
//        jedis.auth("123321");
        jedis.select(0);

测试:没有问题。

image-20230308122846945

1.2 SpringDataRedis

SpringData 是 Spring 中数据操作的模块,包含对各种数据库的集成,其中对 Redis 的集成模块就叫做 SpringDataRedis

  • 提供了对不同 Redis 客户端的整合(Lettuce 和 edis)
  • 提供了 RedisTemplate 统一 API 来操作 Redis
  • 支持 Redis 的发布订阅模型
  • 支持 Redis 哨兵和 Redis 集群
  • 支持基于 Lettuce 的响应式编程
  • 支持基于 JDK、JSON、字符串、Spring 对象的数据序列化及反序列化
  • 支持基于 Redis 的 DKCollection 实现

Spring Data Red is 中提供了 Red is Template 工具类, 其中封装了各种对 Red is 的操作。并且将不同数据类型的操作 API 封装到了不同的类型中:

image-20230308123451493

1.2.1 创建一个新的项目

创建一个Spring项目。如下图:

image-20230308191729141

选择一个NoSQL:Redis,如下图。

image-20230308192112915

如下:

image-20230308194530682

SpringBoot 已经提供了对 SpringDataRedis 的支持,使用非常简单:

1.引入依赖redis:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.引入common-pool依赖:

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

标签:poolConfig,Java,name,Redis,Jedis,jedis,连接池
From: https://blog.51cto.com/u_15568258/6108925

相关文章

  • Java学习笔记13
    1.Date类1.1概述​ java.util.Date类表示特定的瞬间,精确到毫秒。1.2构造方法Date类有多个构造方法,部分已经过时。方法作用publicDate()从此刻到计算机时......
  • 一文深入 Redis 主从复制的原理详解
    文章目录:1、复制过程2、数据间的同步3、全量复制4、部分复制5、心跳6、异步复制复制原理1.复制过程复制的过程步骤如下:1、从节点执行slaveof命令2、从节......
  • 路飞项目day_10 redis 列表 hash 通用 管道 celery简单操作
    目录今日内容详细一、redis之列表二、redis之hash三、redis其他操作四、redis管道五、django中使用redis六、celery介绍和安装七、celery快速使用八、celery包结构今日内......
  • 远程云服务器上docker安装redis的过程
    首先明确一点,云服务环境你已经安装好了docker 1.进入dockerhub官网查看你所需要的redis的版本信息https://registry.hub.docker.com/ ......
  • Java 逻辑运算
    逻辑运算基本语法逻辑运算符,操作的都是boolean类型的变量或常量,而且运算得结果也是boolean类型的值。运算符说明:      &和&&:表示"且"关系,当符号左右两边......
  • Redis五大数据类型
    Redis数据存储格式redis自身是一个Map类型的存储方式,其中所有的数据都是采用key:value的形式存储我们讨论的数据类型指的是存储的数据的类型,也就是value部分的类型,key......
  • java线程池并行
    一:java线程池并行 importorg.junit.Test;importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.CountDownLatch;importjava.util.concu......
  • 路飞-day9——redis之列表类型、redis之hash类型、redis其他方法、redis管道、django
    目录一、redis之列表(List)类型二、redis之hash(字典)类型三、redis其他方法(所有类型通用的方法)四、redis管道五、django中使用redis方式一方式二方案一方案二六、celery介绍......
  • redis使用
    Redis介绍与安装redis:缓存数据库非关系型数据库什么是NoSQL?NoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,泛指非关系型的数据库。Redis的应用场景缓存任务......
  • JavaDoc生成文档
    JavaDocjavadoc命令是用来生成自己API文档的参数信息@author作者名@version版本号@since指明需要最早使用的jdk版本@param参数名@return参数名@throws异常......