• 在Spring Boot项目中使用Redisson


    在Spring Boot项目中使用Redisson

    Redisson简介

    Redisson官网仓库

    Redisson中文文档

    Redission是一个基于Java的分布式缓存和分布式任务调度框架,用于处理分布式系统中的缓存和任务队列。它是一个开源项目,旨在简化分布式系统的开发和管理。

    以下是Redission的一些主要特点和功能:

    1. 分布式缓存:Redission支持分布式缓存,可以将数据存储在分布式环境中,以提高性能和可用性。它提供了各种数据结构,如分布式Map、Set、List、Queue等,可以用来存储和操作数据。

    2. 分布式锁:Redission提供了分布式锁的功能,允许多个线程或多个应用程序在分布式环境中协调对共享资源的访问,以避免竞态条件。

    3. 分布式队列:Redission支持分布式队列,可以用来实现任务调度和消息传递。这对于构建分布式系统中的异步处理非常有用。

    4. 分布式发布/订阅:Redission支持发布/订阅模式,允许不同部分的应用程序通过发布消息和订阅消息来进行通信。

    5. 高可用性:Redission可以配置为在分布式环境中具有高可用性,通过数据复制和故障转移来确保系统的稳定性。

    6. 丰富的客户端库:Redission提供了多种客户端库,可以与不同的Java应用程序和框架集成,包括Spring、Spring Boot等。

    7. 支持多种数据存储后端:Redission可以与多种数据存储后端集成,包括Redis、AWS Elasticache、Apache Ignite等,以适应不同的部署需求。

    总之,Redission是一个强大的Java库,用于构建和管理分布式系统中的缓存和任务调度。它可以帮助开发人员简化分布式系统的开发,并提供了丰富的功能来处理分布式环境中的常见问题。

    配置和使用Redisson

    1. 添加Redisson依赖: 在你的Spring Boot项目的Maven或Gradle配置中添加Redisson的依赖,就像前面提到的一样。确保使用适当的版本。

    Maven 示例:

    <dependency>
        <groupId>org.redissongroupId>
        <artifactId>redissonartifactId>
        <version>3.16.5version> 
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2. 创建Redisson配置类: 在你的Spring Boot项目中创建一个配置类,用于配置Redisson。这个配置类可以包含Redis服务器的连接信息,例如主机地址、端口和密码等。

    import org.redisson.Redisson;
    import org.redisson.api.RedissonClient;
    import org.redisson.config.Config;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class RedissonConfig {
    
        @Bean
        public RedissonClient redissonClient() {
            Config config = new Config();
            config.useSingleServer()
                .setAddress("redis://localhost:6379") // Redis服务器地址和端口
                .setPassword("your_password"); // 如果有密码,请设置密码
    
            return Redisson.create(config);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    请确保根据你的实际Redis配置进行适当的配置。

    3. 注入RedissonClient: 现在,你可以在你的Spring Boot服务或组件中注入RedissonClient,以便在应用程序中使用它执行Redis相关的操作。

    import org.redisson.api.RedissonClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class YourService {
    
        private final RedissonClient redissonClient;
    
        @Autowired
        public YourService(RedissonClient redissonClient) {
            this.redissonClient = redissonClient;
        }
    
        // 在这里使用 redissonClient 来执行各种 Redis 操作
        // 例如:redissonClient.getLock("myLock").lock();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4. 使用RedissonClient: 现在,你可以在你的Spring Boot服务、控制器或其他组件中使用redissonClient来执行Redis操作,例如获取分布式锁等。

    这样,你就可以在Spring Boot项目中使用Redisson来管理Redis连接和执行Redis操作。确保在配置文件中替换实际的Redis服务器地址和密码,以适应你的环境。同时,注意适时关闭RedissonClient以确保资源的释放。

    实际使用代码:

    @Resource
    RedissonClient redissonClient;
    @GetMapping("/testRedission")
    public BaseResponse<String> testRedission(){
        RLock lock = redissonClient.getLock("test:redis:lock");
        try {
            boolean isGetLock = lock.tryLock(10, 3, TimeUnit.SECONDS);
            if(isGetLock){
                log.info("获取锁成功");
                Thread.sleep(100);
                return ResultUtils.success("ok" );
            }else{
                log.error("获取锁失败");
                return ResultUtils.error(ErrorCode.SYSTEM_ERROR);
            }
        } catch (InterruptedException e) {
            throw new BusinessException(ErrorCode.SYSTEM_ERROR,"出异常了");
        } finally {
            lock.unlock();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    jmeter模拟多用户并发
    【Java|golang】337. 打家劫舍 III---树上最大独立集
    【Python】Pandas(学习笔记)
    Doris---索引
    ESP三相SVPWM控制器的simulink仿真
    机器学习(15)---代价函数、损失函数和目标函数详解
    SpringMVC作用域传递及文件上传下载功能
    【4.3 分布形态的描述】(描述性统计分析)——CDA
    还不知道光场相机吗?
    详解集群级备份恢复:物理细粒度备份恢复
  • 原文地址:https://blog.csdn.net/Go_ahead_forever/article/details/133420665