当前位置: 首页 > article >正文

Java 连接 Redis 的两种方式

今天带来一期: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 服务器的地址和端口即可:

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。

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


http://www.kler.cn/a/565768.html

相关文章:

  • 【人工智能】java流式返回数据接口
  • SQL Server 中遇到的常见问题集
  • 【论文笔记-TPAMI 2024】FreqFusion:用于密集图像预测的频率感知特征融合
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_core_module_t
  • React + TypeScript 实现数据库逆向生成数据模型指南
  • PDF图形识别:一键框选,快速计数,开启数字化图形处理新时代
  • 【react】快速上手基础教程
  • 数据结构 之 【带头双向循环链表的C语言实现】(附顺序表与链表的区别)
  • 区县级水司一体化抄表营业收费系统设计思路
  • 多商户商城的技术栈示例
  • APP爬虫:一文掌握手机群控的爬取实战
  • INS+GNSS的图优化关键点
  • 基于yolov8的糖尿病视网膜病变严重程度检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 网络安全 越权分为几种
  • shell中 <<<(Here String)的使用
  • Excel的两个小问题解决
  • Coze/Dify/Ollama在玩ai时候的用途
  • 【Swift 算法实战】城市天际线问题解法
  • 星闪开发入门之常见报错整理(一)
  • 使用 Docker 部署 Memos:简易教程