Java 连接 Redis 的两种方式

devtools/2025/3/1 6:12:45/

今天带来一期:Java通过两种方式连接Redis,如果大家对于除本内容外的疑问无法解答,可以私信找我,我来帮大家解决。

前言

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


一、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 服务器的地址和端口即可:

java">import redis.clients.jedis.Jedis;public class JedisExample {public static void main(String[] args) {// 创建 Jedis 对象,连接本地 Redis 服务器,默认端口 6379Jedis 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 连接:

java">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 也非常简单:

java">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) {// 创建 RedisClientRedisClient 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 支持异步操作,适合高并发场景:

java">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) {// 创建 RedisClientRedisClient 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。

希望本文对你有所帮助!如果有任何问题,欢迎留言讨论。


http://www.ppmy.cn/devtools/163539.html

相关文章

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …

vulfocus靶场漏洞学习——wordpress 垂直越权 (CVE=2021-21389)

目录 一、漏洞描述 二、影响版本 三、漏洞成因 1.绕过邮箱验证&#xff0c;直接激活账户 2.获取admin权限 3.一句话木马 一、漏洞描述 CVE-2021-21389 是 WordPress 核心代码中一个因权限验证不严导致的垂直越权漏洞。攻击者可以通过此漏洞以低权限用户身份执行本应仅限管…

uniapp打包生产证书上架IOS全流程

第一步&#xff1a;生成生产证书 上传CSR文件&#xff0c;windows系统电脑无法上传csr文件可以参考这个&#xff1a; windows下创建ios打包证书的详细流程_香蕉云编 下载生产证书 下载下来的cer生产证书在香蕉云编cer文件上传栏上传&#xff0c;然后生成p12文件 生成p12文件…

服务器为什么会禁止 Ping?服务器禁止 Ping 的好处

在网络管理和服务器运维中&#xff0c;经常会遇到服务器禁止 Ping 的情况。为了确保网络安全和减少不必要的风险&#xff0c;管理员可能会选择禁止 Ping 命令&#xff0c;即禁止服务器响应 ICMP 请求。尽管 Ping 命令是网络诊断中常用的工具&#xff0c;但禁止 Ping 也有其合理…

STM32学习——RTC实时时钟(BKP与RTC外设)

RTC实时时钟 RTC实时时钟 想记录或读取日期和事件&#xff0c;就可以通过操作RTC实现 RTC与BKP和PWR经常同时出现 一般情况下&#xff0c;VBTA是电池供电口&#xff0c;需要接备用电池 在BKP备份寄存器写入两个数据&#xff0c;然后再读出之后显示&#xff0c;BKP的数据&a…

学习Flask:Day 2:模板与表单开发

学习目标&#xff1a;前后端混合开发 # 添加模板渲染 from flask import render_templateapp.route(/profile) def profile():return render_template(profile.html, username"开发者",skills[Vue, JavaScript]) ✅ 实践任务&#xff1a; 创建templates目录 使用J…

网络基础 —HTTP与HTTPS的基本介绍

网络基础 —HTTP与HTTPS的基本介绍 前言1. HTTP的基本概念1.1 什么是HTTP&#xff1f;1.2 HTTP的工作原理1.3 HTTP的特点1.4 HTTP的常见方法 2. HTTPS的基本概念2.1 什么是HTTPS&#xff1f;2.2 HTTPS的工作原理2.3 HTTPS的特点2.4 HTTPS的证书 3. HTTP与HTTPS的区别4. 为什么需…

测试用例详解

一、通用测试用例八要素   1、用例编号&#xff1b;    2、测试项目&#xff1b;   3、测试标题&#xff1b; 4、重要级别&#xff1b;    5、预置条件&#xff1b;    6、测试输入&#xff1b;    7、操作步骤&#xff1b;    8、预期输出 二、具体分析通…