Redis 的Java客户端——Jedis连接池的使用详解
迪丽瓦拉
2024-05-31 01:14:07
0

文章目录

  • 一.Redis 的Java客户端
    • Redis 数据结构
    • 1.1 引入Redis依赖
    • 1.2 Hash例子
    • 1.3 Redis使用步骤总结
  • 二.Jedis连接池
    • 1.2 SpringDataRedis
      • 1.2.1 创建一个新的项目

一.Redis 的Java客户端

jedis的官方仓库地址:

https://github.com/redis/jedis

Redis 数据结构

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

image-20230305154224080

1.1 引入Redis依赖

redis.clientsjedis3.7.0

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

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

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

junit测试:

    @Testvoid 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 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:

org.springframework.bootspring-boot-starter-data-redis

2.引入common-pool依赖:

org.apache.commonscommons-pool2

相关内容