Java连接Redis的两种方式

 更新时间:2025年03月03日 09:55:08   作者:码有余悸  
Redis 是一种高性能的键值存储数据库,广泛应用于缓存、消息队列、会话存储等场景,Java 作为一门广泛使用的编程语言,提供了多种方式来连接和操作 Redis,本文将介绍两种常用的 Java 连接 Redis 的方式,需要的朋友可以参考下

前言

Redis 是一种高性能的键值存储数据库,广泛应用于缓存、消息队列、会话存储等场景。Java 作为一门广泛使用的编程语言,提供了多种方式来连接和操作 Redis。本文将介绍两种常用的 Java 连接 Redis 的方式:Jedis 和 Lettuce,并详细说明它们的使用方法。

一、Jedis

Jedis 是一个轻量级的 Java Redis 客户端,提供了简单易用的 API 来操作 Redis。它适合大多数 Redis 操作场景,并且易于上手。

1. 添加依赖

首先,在项目中添加 Jedis 的依赖。以 Maven 项目为例,在 pom.xml 文件中添加以下依赖:

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

2. 连接 Redis

使用 Jedis 连接 Redis 非常简单,只需要创建一个 Jedis 对象,并指定 Redis 服务器的地址和端口即可:

import redis.clients.jedis.Jedis;

public class JedisExample {
    public static void main(String[] args) {
        // 创建 Jedis 对象,连接本地 Redis 服务器,默认端口 6379
        Jedis jedis = new Jedis("localhost", 6379);

        // 测试连接
        System.out.println("连接成功");
        System.out.println("服务正在运行: " + jedis.ping());

        // 设置键值对
        jedis.set("name", "Redis with Jedis");

        // 获取值
        String value = jedis.get("name");
        System.out.println("获取的值: " + value);

        // 关闭连接
        jedis.close();
    }
}

3. 连接池

为了提高性能,可以使用 Jedis 连接池来管理 Redis 连接:

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

public class JedisPoolExample {
    public static void main(String[] args) {
        // 配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(10); // 最大连接数
        poolConfig.setMaxIdle(5);   // 最大空闲连接数

        // 创建连接池
        JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379);

        // 从连接池获取连接
        try (Jedis jedis = jedisPool.getResource()) {
            // 测试连接
            System.out.println("连接成功");
            System.out.println("服务正在运行: " + jedis.ping());

            // 设置键值对
            jedis.set("name", "Redis with Jedis Pool");

            // 获取值
            String value = jedis.get("name");
            System.out.println("获取的值: " + value);
        }

        // 关闭连接池
        jedisPool.close();
    }
}

二、Lettuce

Lettuce 是一个高性能的 Java Redis 客户端,基于 Netty 实现,支持异步和响应式编程模型。它适合高并发场景,并且提供了更丰富的功能。

1. 添加依赖

在项目中添加 Lettuce 的依赖。以 Maven 项目为例,在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>io.lettuce</groupId>
    <artifactId>lettuce-core</artifactId>
    <version>6.2.1.RELEASE</version>
</dependency>

2. 连接 Redis

使用 Lettuce 连接 Redis 也非常简单:

import io.lettuce.core.RedisClient;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;

public class LettuceExample {
    public static void main(String[] args) {
        // 创建 RedisClient
        RedisClient redisClient = RedisClient.create("redis://localhost:6379");

        // 获取连接
        StatefulRedisConnection<String, String> connection = redisClient.connect();

        // 获取同步操作接口
        RedisCommands<String, String> syncCommands = connection.sync();

        // 测试连接
        System.out.println("连接成功");
        System.out.println("服务正在运行: " + syncCommands.ping());

        // 设置键值对
        syncCommands.set("name", "Redis with Lettuce");

        // 获取值
        String value = syncCommands.get("name");
        System.out.println("获取的值: " + value);

        // 关闭连接
        connection.close();
        redisClient.shutdown();
    }
}

3. 异步操作

Lettuce 支持异步操作,适合高并发场景:

import io.lettuce.core.RedisClient;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.async.RedisAsyncCommands;
import java.util.concurrent.CompletableFuture;

public class LettuceAsyncExample {
    public static void main(String[] args) {
        // 创建 RedisClient
        RedisClient redisClient = RedisClient.create("redis://localhost:6379");

        // 获取连接
        StatefulRedisConnection<String, String> connection = redisClient.connect();

        // 获取异步操作接口
        RedisAsyncCommands<String, String> asyncCommands = connection.async();

        // 异步设置键值对
        CompletableFuture<String> future = asyncCommands.set("name", "Redis with Lettuce Async");

        // 异步获取值
        future.thenCompose(result -> asyncCommands.get("name"))
              .thenAccept(value -> System.out.println("获取的值: " + value));

        // 关闭连接
        connection.close();
        redisClient.shutdown();
    }
}

结尾

本文介绍了 Java 连接 Redis 的两种常用方式:Jedis 和 Lettuce。Jedis 简单易用,适合大多数场景;而 Lettuce 性能更高,支持异步和响应式编程,适合高并发场景。开发者可以根据实际需求选择合适的工具来操作 Redis。

到此这篇关于Java连接Redis的两种方式的文章就介绍到这了,更多相关Java连接Redis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中数组的定义和使用教程(三)

    Java中数组的定义和使用教程(三)

    这篇文章主要给大家介绍了关于Java中数组的定义和使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 利用Maven入手Spring Boot第一个程序详解

    利用Maven入手Spring Boot第一个程序详解

    这篇文章主要给大家介绍了关于如何利用Maven入手Spring Boot第一个程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • Spring Boot Gradle发布war到tomcat的方法示例

    Spring Boot Gradle发布war到tomcat的方法示例

    本篇文章主要介绍了Spring Boot Gradle发布war到tomcat的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 详解Java如何通过Socket实现查询IP

    详解Java如何通过Socket实现查询IP

    在本文中,我们来学习下如何找到连接到服务器的客户端计算机的IP地址。我们将创建一个简单的客户端-服务器场景,让我们探索用于TCP/IP通信的java.net API,感兴趣的可以了解一下
    2022-10-10
  • 使用Java对10个数进行排序的几种方法

    使用Java对10个数进行排序的几种方法

    在编程中,排序算法是基础且重要的内容之一,本文将介绍如何使用Java语言对10个数进行排序,我们将使用几种不同的方法来实现这一功能,包括使用内置的排序方法和自定义排序算法,需要的朋友可以参考下
    2026-03-03
  • Spring的事务管理你了解吗

    Spring的事务管理你了解吗

    这篇文章主要为大家介绍了Spring的事务管理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • springcloud gateway高级功能之集成apollo后动态刷新路由方式

    springcloud gateway高级功能之集成apollo后动态刷新路由方式

    这篇文章主要介绍了springcloud gateway高级功能之集成apollo后动态刷新路由方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java编程实现NBA赛事接口调用实例代码

    Java编程实现NBA赛事接口调用实例代码

    这篇文章主要介绍了Java编程实现NBA赛事接口调用实例代码,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot自定义雪花算法生成ID的实现示例

    SpringBoot自定义雪花算法生成ID的实现示例

    雪花算法是一种生成唯一ID的分布式算法,它能生成不重复的、有时间顺序的全局唯一ID,本文主要介绍了SpringBoot自定义雪花算法生成ID的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • Java 中 Date 与 Calendar 之间的编辑与转换实例详解

    Java 中 Date 与 Calendar 之间的编辑与转换实例详解

    这篇文章主要介绍了Java 中 Date 与 Calendar 之间的编辑与转换 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07

最新评论