Java 连接 Redis 的两种方式

news/2025/3/1 18:48:05/

今天带来一期: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/news/1575840.html

相关文章

TikTok隐私保护措施:确保用户安全

TikTok隐私保护措施&#xff1a;确保用户安全 在这个信息爆炸的时代&#xff0c;社交媒体平台的隐私保护问题日益成为公众关注的焦点。TikTok&#xff0c;作为全球领先的短视频平台&#xff0c;拥有庞大的用户群体&#xff0c;因此&#xff0c;其隐私保护措施显得尤为重要。本…

【WPF命令绑定之--没有Command属性的控件如何进行命令绑定?】

前言 C#WPF之命令绑定 内容 有些控件不支持直接绑定命令&#xff0c;可以调用其他依赖实现命令的绑定。 依赖&#xff1a;Microsoft.Xaml.Behaviors.Wpf 使用如下代码可以实现事件的命令绑定&#xff0c;及传递参数&#xff1a; 1、引用&#xff1a;xmlns:behavior“http://sch…

【Docker】使用Docker搭建-MySQL数据库服务

零、更换Docker镜像源 因为国内现在封锁了Docker默认拉取镜像的站点&#xff08;DockerHub&#xff09;&#xff0c;而且国内大部分Docker镜像站已全部下线&#xff0c;导致现在很多朋友在拉取镜像的时候会出现无法拉取的现象&#xff0c;这时候就需要进行更换Docker镜像源。 可…

加油站小程序实战教程04类目级联选择

目录 1 完善油号、油枪新增功能2 配置级联选择总结 后台我们目前增加了类目和站点信息&#xff0c;当录入站点信息时候&#xff0c;因为有一级类目和二级类目&#xff0c;我们需要做级联选择&#xff0c;本篇我们完善一下油号、油枪的新增功能&#xff0c;实现一下站点类目信息…

网络安全导论PDF

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这份重点是在准备复试时边看书和ppt边手打的。掐指一算已经是整整一个月前的事情惹。 这本教材是哈工程复试参考书目&#xff0c;但是网络上关于它的材料比较少。…

Spring Cloud Gateway 网关的使用

在之前的学习中&#xff0c;所有的微服务接口都是对外开放的&#xff0c;这就意味着用户可以直接访问&#xff0c;为了保证对外服务的安全性&#xff0c;服务端实现的微服务接口都带有一定的权限校验机制&#xff0c;但是由于使用了微服务&#xff0c;就需要每一个服务都进行一…

会话与会话管理:Cookie与Session的深度解析

一、什么是会话&#xff1f; 二、Cookie&#xff1a;客户端存储技术 1. Cookie的工作原理 2、在后端设置cookie 3、在前端设置cookie 三、浏览器开启了cookie禁用怎么办&#xff1f; 一、什么是会话&#xff1f; 会话&#xff08;Session&#xff09;是指一个用户与服务器之间…

CES Asia 2025前瞻:网络安全与数据隐私成焦点

在数字化转型的浪潮加速奔涌之际&#xff0c;网络安全与数据隐私已然成为企业发展版图中的核心关切。即将盛大启幕的CES Asia 2025第七届亚洲消费电子技术贸易展&#xff08;赛逸展&#xff09;&#xff0c;无疑将汇聚行业目光&#xff0c;成为探讨网络安全与数据隐私领域前沿趋…