Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程

ops/2024/11/25 11:40:05/

Redisson 是一个高性能的 Java Redis 客户端,提供了丰富的分布式工具集,如分布式锁、Map、Queue 等,帮助开发者简化 Redis 的操作。在集成 Redisson 到项目时,开发者通常有两种选择:

  1. 使用 Redisson 原始依赖
  2. 使用 Redisson Spring Boot Starter

这篇文章将详细介绍这两种集成方式的配置、使用场景以及它们的差异,帮助你更好地理解并选择合适的方案。

1. 使用 Redisson 原始依赖

Redisson 原始依赖的方式指的是直接使用 redisson 库,并自行配置 RedissonClient 来与 Redis 进行交互。这种方法适用于任何 Java 项目,包括 Spring、非 Spring 项目。

使用步骤

1.1 引入依赖

pom.xml 中添加 Redisson 依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.5</version> <!-- 版本号可根据需求调整 -->
</dependency>
1.2 创建配置类并初始化 RedissonClient

手动定义 Config 对象,并创建 RedissonClient 实例:

java">import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;public class RedisConfig {public RedissonClient createRedissonClient() {// 创建 Redisson 配置对象Config config = new Config();// 设置为单节点配置config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("yourPassword");// 创建 RedissonClient 实例return Redisson.create(config);}
}
1.3 使用 RedissonClient

在业务代码中使用 RedissonClient

java">public class RedissonExample {public static void main(String[] args) {RedisConfig redisConfig = new RedisConfig();RedissonClient redissonClient = redisConfig.createRedissonClient();// 使用 Redisson 获取分布式锁var lock = redissonClient.getLock("testLock");lock.lock();try {// 模拟业务逻辑System.out.println("Lock acquired and executing critical section.");} finally {lock.unlock();}}
}

特点

  • 手动配置:手动定义 Config 对象并配置 RedissonClient,可以完全控制连接参数、池大小、超时等。
  • 适用于非 Spring 环境:这种方式并不依赖 Spring,可以应用于任何 Java 项目。
  • 灵活性强:可以根据具体需求实现自定义逻辑和配置。

使用场景

  • 项目对 Spring 依赖不多,或完全不使用 Spring。
  • 需要对 RedissonClient 的每个细节进行精细控制。

2. 使用 Redisson Spring Boot Starter

redisson-spring-boot-starterRedisson 提供的用于与 Spring Boot 更好集成的模块,它提供了自动化的配置功能,使得 RedissonClient 的配置过程更加简洁。

使用步骤

2.1 引入依赖

pom.xml 中添加 redisson-spring-boot-starter 依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.5</version> <!-- 版本号可以根据需求调整 -->
</dependency>
2.2 在 application.ymlapplication.properties 中配置 Redis 信息

application.yml 中配置 Redis:

redisson:singleServerConfig:address: "redis://127.0.0.1:6379"password: "yourPassword"connectionPoolSize: 10connectionMinimumIdleSize: 2
2.3 使用 RedissonClient 自动注入

Spring Boot 会自动配置 RedissonClient,因此你可以直接注入并使用它:

java">import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RedissonController {@Autowiredprivate RedissonClient redissonClient;@GetMapping("/lock")public String acquireLock() {var lock = redissonClient.getLock("testLock");lock.lock();try {// 模拟业务逻辑return "Lock acquired and critical section executed.";} finally {lock.unlock();}}
}

特点

  • 自动化配置redisson-spring-boot-starter 能从 Spring Boot 配置文件中读取参数并自动创建 RedissonClient
  • 与 Spring Boot 紧密集成:无需手动管理 RedissonClient,更加符合 Spring Boot 的自动化特性。
  • 方便注入:可以通过 @Autowired 轻松地注入 RedissonClient,非常符合 Spring 的开发风格。

使用场景

  • 使用 Spring Boot 项目,并且希望最大化利用 Spring Boot 的自动配置特性。
  • 希望简化代码、减少配置工作量。

两种方式的对比

特性原始 Redisson 依赖Redisson Spring Boot Starter
配置方式手动创建 ConfigRedissonClient使用 application.yml 自动配置
适用项目类型任何 Java 项目,包括非 Spring 项目适用于 Spring Boot 项目
灵活性配置灵活,细节控制全面依赖自动配置,灵活性稍低
代码复杂度需要手动编写配置类自动配置,代码量少,集成简单
与 Spring 的集成需手动管理,适用于传统 Java 项目Spring Boot 会自动管理 RedissonClient
典型场景对 Spring 依赖不多,或者需要特殊配置场景使用 Spring Boot,追求快速开发和简洁配置

如何选择?

  • 如果你的项目是传统 Java 项目,或者使用了 Spring Framework 而不是 Spring Boot,并且你希望对 Redis 的配置有更多细节掌控,那么可以选择 原始 Redisson 依赖 的方式。它可以让你根据需求实现自定义的配置和连接管理。
  • 如果你的项目是 Spring Boot 项目,并且你希望充分利用 Spring Boot 的自动配置特性来减少配置代码,可以选择 Redisson Spring Boot Starter。这种方式集成简单,代码更加简洁,可以大大提高开发效率。

总结

Redisson 提供了两种集成 Redis 的方式:原始依赖和 Spring Boot Starter。原始依赖适用于需要完全自定义配置的场景,而 Spring Boot Starter 使得集成过程变得更加简单,特别适合 Spring Boot 项目。根据具体项目的需求和开发环境选择合适的方式,能够更好地帮助你完成项目的 Redis 集成,实现更强大的分布式能力。


http://www.ppmy.cn/ops/136555.html

相关文章

打造属于你的表单验证工具

在前端开发中&#xff0c;表单验证是一个常见且重要的需求。传统的表单验证往往导致代码重复、管理困难&#xff0c;尤其在面对复杂的表单时&#xff0c;验证逻辑容易变得混乱。为了提高开发效率和保证数据准确性&#xff0c;我们开发了一个高度自定义的表单验证器&#xff0c;…

【漏洞复现】代付微信小程序系统 read.php 任意文件读取漏洞

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…

oracle排查长时间没提交的事务造成的阻塞案例

一 问题描述 开发同事反馈生产环境某个接口慢&#xff0c;一个普通的按主键更新的update竟然需要5分钟&#xff0c;而我手动执行秒返回&#xff0c;猜测是发生了阻塞&#xff0c;需要排查出阻塞源。 有时&#xff0c;一个事务里会包含多个sql&#xff0c;有的还包含上传附件等…

使用LUKS对Linux磁盘进行加密

前言 本实验用于日常学习用&#xff0c;如需对存有重要数据的磁盘进行操作&#xff0c;请做好数据备份工作。 此实验只是使用LUKS工具的冰山一角&#xff0c;后续还会有更多功能等待探索。 LUKS&#xff08;Linux Unified Key Setup&#xff09;是Linux系统中用于磁盘加密的一…

网页F12:缓存的使用(设值、取值、删除)

一、设置值 例如&#xff1a;设置一个key为name&#xff0c;value为Jack的值 1、在控制台输入代码 localStorage.setItem(name,Jack) 2、查看缓存值 二、取值 1、在控制台输入代码 取出key为name的值 localStorage.getItem(name) 三、删除 删除指定key的值 1、在控制台输…

UE材质不透明蒙版选项

①什么是不透明蒙版 在 Unreal Engine 5 (UE5) 中&#xff0c;不透明蒙版插槽 (Opacity Mask) 是材质中的一个重要参数&#xff0c;用于控制材质的透明度和不透明区域。具体来说&#xff0c;它允许你在材质中实现 部分透明 或 不透明 的效果&#xff0c;通常用于实现如 不规则…

moduo之单例模板Singleton

简介 moduo提供了单例模板类&#xff0c;是线程安全的 结构 单例是动态分配的&#xff0c;不是使用静态变量。其线程安全是通过pthread_once_t #mermaid-svg-N0Vthvvibe8sdg0v {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}…

设计模式——组合实体模式

定义与概念 组合实体模式&#xff08;Composite Entity Pattern&#xff09;是一种设计模式&#xff0c;主要用于将多个相关的实体组合成一个单一的实体&#xff0c;以实现对这些实体的统一管理和操作。这种模式在处理复杂的对象关系时非常有用&#xff0c;它将相关的数据和操…