首页 > 数据库 >Redis Java客户端(带示例代码)

Redis Java客户端(带示例代码)

时间:2024-07-28 11:28:16浏览次数:17  
标签:Java 示例 Redis jedis Jedis 连接 连接池 客户端

目录

概述

Jedis -- 快速入门

Jedis 简介

创建项目和测试

1. 引入依赖

2. 建立连接

3. 测试

4. 释放资源

Jedis连接池

JedisPool 简介

创建连接池

使用连接池


概述

在Redis官网中提供了各种语言的客户端

网站:Connect with Redis clients

标记为❤的就是推荐使用的 java 客户端

包括:

  • Jedis 和 Lettuce:这两个主要是提供了 Redis 命令对应的 API ,方便我们操作 Redis ,而 SpringDataRedis 又对这两种做了抽象和封装
  • Redisson:是在 Redis 基础上实现了分布式的可伸缩的java数据结构,例如 Map.Queue 等,而且支持跨进程的同步机制Lock.Semaphore 等待,比较适合用来实现特殊的功能需求。

官方 Redis 客户端demo -- Java

1. 找到 Redis 客户端

2. 可以选择 Jedis 和 Lettuce

3. 选择 Jedis

内容拉到下面 

看到可以选择是 Maven 或 Gradle

这是一个 String 类型的示例


Jedis -- 快速入门

Jedis 简介

Jedis 是一个高性能的 Redis Java 客户端库,由 Salvatore Sanfilippo 开发,后来由诸多贡献者维护。

它提供了丰富的 API 来与 Redis 数据库进行交互,支持 Redis 的大部分功能,包括基本的数据类型操作、事务、发布/订阅、排序、集合操作、Lua 脚本、HyperLogLog、地理空间索引和搜索等。

特点 :

  1. 简单易用:Jedis 提供了直观的方法调用来执行 Redis 命令,使得开发者可以轻松地集成 Redis 到 Java 应用中。
  2. 高效Jedis 支持管道(pipelining)和批处理,允许一次发送多个命令而无需等待每个命令的响应,从而减少网络往返次数,提高性能
  3. 连接管理:除了单个连接外,Jedis 还支持连接池 (JedisPool),可以复用连接,避免频繁建立和断开连接的开销。
  4. 事务支持:Jedis 支持 Redis 的 MULTI/EXEC 事务机制,可以原子性地执行一组命令
  5. 异步支持:从 Jedis 2.9.0 版本开始,提供了异步 API,允许开发者使用回调或 Future 接口来处理命令响应,进一步提升性能。

创建项目和测试

1. 引入依赖

<!--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>

2. 建立连接


    private Jedis jedis ;
    /**
     * 在每个测试之前设置Redis连接。
     * 这个方法确保了每次测试都有一个干净的Redis环境。
     * 它通过建立到Redis服务器的连接,进行身份验证,并选择一个特定的数据库来准备测试。
     *
     * @BeforeEach 注解指示这个方法在每个测试方法执行之前运行。
     */
    @BeforeEach
    void setUp() {
        // 初始化Jedis客户端,连接到Redis服务器。
        // 1. 建立连接
        jedis = new Jedis("192.168.50.130", 6379);
        // 对Redis服务器进行身份验证。
        // 2. 设置密码
        jedis.auth("123456");
        // 选择要使用的Redis数据库。
        // 3. 选择库
        jedis.select(1);
    }

3. 测试

@Test
void testString() {
    // 存入数据
    String result = jedis.set("name", "虎哥");
    System.out.println("result = " + result);
    // 获取数据
    String name = jedis.get("name");
    System.out.println("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);
}

测试结果:

redis可视化客户端

4. 释放资源

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

Jedis连接池

JedisPool 简介

Jedis 是一个用于与 Redis 数据库交互的 Java 客户端库。在高并发的应用场景中,频繁地创建和销毁 Redis 连接会导致不必要的性能开销。为了解决这个问题,Jedis 提供了一个连接池 (JedisPool) 功能,它可以重用已有的连接,从而显著提高效率和响应速度。

JedisPool 是基于 GenericObjectPool 实现的,后者是 Apache Commons Pool 的一部分,专门用于管理可重用对象的池。

JedisPool 允许你配置最大连接数、空闲连接数、超时时间等参数,以适应不同的应用场景。

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

有关池化思想,并不仅仅是这里会使用,很多地方都有,比如说我们的 数据库连接池,比如我们 tomcat 中的线程池,这些都是池化思想的体现。

池化技术文章:概述池化技术-CSDN博客

创建连接池

public class JedisConnectionFactory {
    private static final JedisPool jedisPool;

    static {
    // 初始化连接池配置对象
    JedisPoolConfig config = new JedisPoolConfig();

    // 设置连接池的最大连接数,默认为8,这里设置为100
    // 当所有物理Jedis实例都被占用的时候,最多再临时创建多少个连接
    config.setMaxTotal(100);

    // 设置连接池的最大空闲连接数,默认也是8,这里设置为50
    // 当需要一个连接时,如果有空闲的连接,则直接返回,否则创建新的连接
    config.setMaxIdle(50);

    // 设置连接池的最小空闲连接数,默认为0,这里设置为10
    // 这个参数的意义在于保证连接池中始终有10个以上的空闲连接,以便于快速响应新的请求
    config.setMinIdle(10);

    // 设置从连接池获取连接的最大等待时间,默认为-1,表示无限等待
    // 这里设置为1000毫秒,即1秒,如果超过这个时间还没有可用的连接,则抛出异常
    config.setMaxWaitMillis(1000);

    // 创建Jedis连接池对象
    // 参数1:JedisPoolConfig对象,用于配置连接池的行为
    // 参数2:Redis服务器的IP地址,这里是"192.168.50.1"
    // 参数3:Redis服务器的端口号,默认为6379
    // 参数4:连接超时时间,单位毫秒,这里是1000毫秒
    // 参数5:连接密码,这里是"123456"
    // 注意:如果Redis服务器不需要密码验证,可以将此参数设为null
    jedisPool = new JedisPool(config,
                              "192.168.50.1",
                              6379,
                              1000,
                              "123456");
}

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

使用连接池

@BeforeEach
    void setUp() {
        // 初始化Jedis客户端,连接到Redis服务器。
        // 1. 建立连接
//        jedis = new Jedis("192.168.50.130", 6379);
        jedis = JedisConnectionFactory.getJedis();
        // 对Redis服务器进行身份验证。
        // 2. 设置密码
        jedis.auth("123456");
        // 选择要使用的Redis数据库。
        // 3. 选择库
        jedis.select(1);
    }

代码说明:

1. 在我们完成了使用工厂设计模式来完成代码的编写之后,我们在获得连接时,就可以通过工厂来获得,而不用直接去 new 对象,降低耦合,并且使用的还是连接池对象

2. 当我们使用了连接池后,当我们关闭连接其实并不是关闭,而是将Jedis还回连接池的

Redis其他相关博客(都出自本人哦!!!):

Redis (常用数据结构和命令)-CSDN博客

标签:Java,示例,Redis,jedis,Jedis,连接,连接池,客户端
From: https://blog.csdn.net/qq_20770569/article/details/140612315

相关文章

  • 利用Java调用银行卡二要素接口
    一、什么是银行卡二要素?银行卡二要素验证接口是一种API接口,主要用于验证用户提供的银行卡号与姓名这两个要素是否一致。二、银行卡二要素作用及场景有哪些?其作用是通过核验用户的身份信息,判断是否为目标用户本人操作,常用于安全级别要求一般的使用场景,具体应用场景包括:1.......
  • 利用Java免费调用运营商三要素接口
    一、什么是运营商三要素?运营商三要素接口一般用于核验姓名、身份证号、手机号是否一致。它是电信运营商基于留存的实时数据,设计成API接口的形式,为有相关运营商查询核验需求的用户提供接入服务。二、以下是运营商三要素接口常见的使用场景:1.金融服务:在开户、贷款、申请信用......
  • 基于Java+Vue的采购管理系统:实现采购数字化升级(源代码)
      前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确保供应......
  • Java 自定义注解
    一、Java 自定义注解的用途、 1、可以记录在特殊方法进行日志记录     2、可以进行 特殊鉴权 如@ValidateRole(“admin") 只有当前用户拥有指定角色时才放行 否则抛自定义异常 无权限    3、可以用于参数 如Controller 方法中的参数进行 参数......
  • Java计算机毕业设计旅游服务管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,旅游服务管理的复杂性与日俱增。传统的手工管理方式已难以满足现代旅游业的高效、精准服务需求。特别是在用户体验、旅游团管理......
  • Java计算机毕业设计驾校学员管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着汽车保有量的持续增长,驾驶技能已成为现代社会不可或缺的基本技能之一。驾校作为培养驾驶员的重要机构,其学员管理效率与服务质量直接影响到学员的......
  • Java计算机毕业设计美食商城(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和人们生活水平的日益提高,美食不再仅仅是满足口腹之欲的简单需求,它已经成为了一种文化、一种生活方式,甚至是一种社交媒介。在这......
  • Java计算机毕业设计结合疫情情况的婚恋系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景近年来,全球疫情的持续影响不仅改变了人们的生活方式,也深刻影响了人们的社交与情感需求。在隔离与社交距离成为常态的背景下,传统线下相亲、约会活动受......
  • javac 提示类文件具有错误的版本 62.0,应为 52.0
    您遇到的错误提示"类文件具有错误的版本61.0,应为52.0"表示您正在尝试运行一个使用较新版本的Java编译的类文件,而您的Java运行环境(JRE)版本较旧。具体来说:版本61.0对应于Java17。版本52.0对应于Java8。因此,您需要使用Java17或更高版本的JDK来编译和运行该......
  • JAVA基础 - 运算符
    目录一.简介二.算术运算符二.自加,自减三. 算术赋值运算符四.关系运算符五.逻辑运算符六.位运算符七.其他运算符八.运算优先级一.简介在Java中,运算符用于对数据进行各种运算操作。以下是一些常见的Java运算符:算术运算符:+ :加法- :减法* :乘法/ ......