返回顶部
首页 > 资讯 > 精选 >spring boot如何集成redisson
  • 891
分享到

spring boot如何集成redisson

2023-07-04 12:07:08 891人浏览 八月长安
摘要

这篇文章主要介绍了spring boot如何集成redisson的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring boot如何集成Redisson文章都会有所收获,下面我们一起来看

这篇文章主要介绍了spring boot如何集成redisson的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring boot如何集成Redisson文章都会有所收获,下面我们一起来看看吧。

集成及注意事项

redisson支持redis环境,单机、集群、哨兵、云等。

这里就讲一下集群模式需要注意的地方,redisson启动会检测master/slave节点是否正常,一般来说3分片3主3从是没有什么问题的,但是如果测试环境1分片1主1从或者3主都是启动不了的。

除了环境需要注意,还有注意兼容有无密码的情况。

手动注入redisson配置

一般情况下,生产环境都是有密码的。有密码的话,建议手动注入redisson配置,不用Spring Boot来帮你集成,因为可能spring boot识别不了密码。

@Configurationpublic class RedissonConfiguration {    @Value("${spring.redis.cluster.nodes}")    private String node;    @Value("${spring.redis.passWord:}")    private String password;    @Bean    public RedissonClient redissonClient() {        Config config = new Config();        String[] nodes = node.split(",");        ClusterServersConfig clusterServersConfig = config.useClusterServers();        for (String nodeAddress : nodes) {            clusterServersConfig.addNodeAddress(prefixAddress(nodeAddress));        }        if (StringUtils.isNotBlank(password)) {            clusterServersConfig.setPassword(password);        }        return Redisson.create(config);    }    private String prefixAddress(String address) {        if (!StringUtils.isBlank(address) && !address.startsWith("redis")) {            return "redis://" + address;        }        return address;    }}

上面可以根据自己实际情况调优一些配置。

当然除了密码需要注意,还有一点就是是否有ssl,目前所在company是用的亚马逊云,会有ssl

spring boot 兼容 redis 可以在yaml配置里天际: Ssl:true,但对于redisson来说添加前缀就可以啦:

rediss:// + ip:端口或者域名

具体yaml配置

spring:  redis:    cluster:      nodes: rediss://clustercfg.xxx    password: 'xxx'    timeout: 30000    Ssl: true    lettuce:      pool:        max-idle: 100

利用互斥策略,一开始这样的

@Scheduled(cron = "${xxx:0 0 */2 * * ?}")public void createProcess() {    RLock lock = redisson.getLock(key);    try {        if (lock.tryLock()) {           // 执行运行程序        } else {            log.info("createProcess 获取锁失败");        }    } catch (Exception e) {        log.error("xxx", e);    } finally {        // 是否有锁 && 是否当前线程        if (lock != null && lock.isLocked() && lock.isHeldByCurrentThread()) {            lock.unlock();        }    }}

咋一看是没有什么问题的,但是本次重构的定时任务比较多,因此会涉及到很多try catch相同的代码。

注解方式

解决重复代码方式之一就是封装,在就是注解切面,想到注解方式更加灵活

于是

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface RedissonSyncLock {    String pref();        String keyEL();        int waitSec() default 0;}

需要一个切面

@Slf4j@Aspect@Component@RequiredArgsConstructorpublic class RedissonSyncLockAspect {    private final Redisson redisson;    @Around(value = "@annotation(xxx.RedissonSyncLock)")    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {        MethodSignature signature = (MethodSignature) joinPoint.getSignature();        RedissonSyncLock redissonSyncLock = signature.getMethod().getAnnotation(RedissonSyncLock.class);        Object[] args = joinPoint.getArgs();        String key = SpelUtil.parseSpel(signature.getMethod(), args, redissonSyncLock.keyEL());        RLock lock = null;        try {            if (StringUtils.isNotBlank(key) && !StringUtils.equals(key, "null")                 lock = redisson.getLock(redissonSyncLock.pref().concat(key));                if (lock.tryLock(redissonSyncLock.waitSec(), TimeUnit.SECONDS)) {                    return joinPoint.proceed();                }            }            log.info("RedissonSyncLockAspect 上锁失败 {}", key);        } finally {            if (lock != null && lock.isLocked() && lock.isHeldByCurrentThread()) {                lock.unlock();            }        }    }}

使用方法:

@RedissonSyncLock(pref = KeyConstant.xxx, keyEL = "#bean.accountNo")private void xxx(Bean bean){     // 程序执行}

的确使用起来是比较方便的。

关于“spring boot如何集成redisson”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“spring boot如何集成redisson”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: spring boot如何集成redisson

本文链接: https://lsjlt.com/news/345140.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • spring boot如何集成redisson
    这篇文章主要介绍了spring boot如何集成redisson的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring boot如何集成redisson文章都会有所收获,下面我们一起来看...
    99+
    2023-07-04
  • spring boot集成redisson的方法
    本文小编为大家详细介绍“spring boot集成redisson的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“spring boot集成redisson的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-29
  • spring boot集成redisson的最佳实践示例
    目录前言集成jedis实例,xml方式集成前引用的jar spring bean配置xml集成redisson实例,java bean的方式集成前引入的jarjavabea...
    99+
    2024-04-02
  • Spring Boot 集成Redisson实现分布式锁详细案例
    目录前言分布式锁实现引入jar包Redisson的配置application.yml中引入redisson.yml配置redisson.yml配置封装Redisson工具类模拟秒杀扣...
    99+
    2022-11-13
    Spring Boot 集成Redisson Spring Boot 分布式锁
  • spring boot集成sitemesh
    Sitemesh简介Sitemesh是由一个基于Web页面布局、装饰及与现存Web应用整合的框架,是一个装饰器。它能帮助我们在由大量页面工程的项目中创建一致的页面布局和外观,如一致的导航条、一致的banner、一致的版权等。SiteMesh...
    99+
    2017-06-25
    java教程 spring boot
  • 解决spring集成redisson踩过的坑
    目录spring集成redisson踩过的坑第一坑就是版本兼容问题第二个坑是设置密码问题spring整合redisson配置配置方式单节点配置standalone哨兵配置sentin...
    99+
    2024-04-02
  • Spring boot 集成 MQTT详情
    目录一、简介二、主要特性三、集成步骤1.引入相关jar包2.核心配置类3.网关配置4.编写测试类5.yml配置信息一、简介 MQTT(Message Queuing Telemetr...
    99+
    2024-04-02
  • 使用 Spring Boot 集成 Nacos
    使用 Spring Boot 集成 Nacos 在本篇博客中,我们将介绍如何使用 Spring Boot 框架来集成 Nacos,实现服务的注册与发现。Nacos 是一个开源的动态服务发现、配置和服务...
    99+
    2023-09-21
    spring boot java spring cloud
  • Spring boot怎么集成MQTT
    这篇“Spring boot怎么集成MQTT”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring ...
    99+
    2023-06-30
  • 详解spring boot集成RabbitMQ
    RabbitMQ作为AMQP的代表性产品,在项目中大量使用。结合现在主流的spring boot,极大简化了开发过程中所涉及到的消息通信问题。首先正确的安装RabbitMQ及运行正常。RabbitMQ需啊erlang环境,所以首先安装对应版...
    99+
    2023-05-31
    spring boot bit
  • 在 Spring Boot 中如何优雅地集成 Shell?
    Shell,又称为命令行解释器,是一种运行在操作系统上的编程语言解释器。它可以让用户通过命令行界面来操作计算机,执行各种任务。在很多情况下,我们需要在应用程序中集成 Shell,以便于用户通过命令行的方式来操作应用程序。本文将介绍在 Sp...
    99+
    2023-06-14
    shell spring django
  • Spring Boot中怎么集成Redis
    本篇文章为大家展示了Spring Boot中怎么集成Redis,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。添加依赖使用像 Redis 这类的 NoSQL 数据库就必须要依赖 spring-data...
    99+
    2023-06-16
  • 【Spring Boot丨(11 )】json的集成
    集成JSON 概述JacksonGsonJSON-B 主页传送门:📀 传送 概述 Spring boot 提供了三种json库的集成: GsonJacksonJSON-B 上述三种库提供了将Jav...
    99+
    2023-08-19
    spring boot json java 后端
  • spring boot集成测试的方法
    这篇文章主要介绍“spring boot集成测试的方法”,在日常操作中,相信很多人在spring boot集成测试的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”spri...
    99+
    2024-04-02
  • Spring Boot怎么集成PageHelper使用
    这篇文章主要介绍了Spring Boot怎么集成PageHelper使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot怎么集成PageHelper使用文章都会有所收获,...
    99+
    2023-06-30
  • Spring Boot Redis 集成配置详解
    spring Boot 熟悉后,集成一个外部扩展是一件很容易的事,集成Redis也很简单,看下面步骤配置:一、添加pom依赖 <dependency> <groupId>org.springframe...
    99+
    2023-05-31
    spring boot redis
  • 详解Spring Boot 集成Shiro和CAS
    请大家在看本文之前,先了解如下知识点: Shiro 是什么?怎么用? Cas 是什么?怎么用? 最好有spring基础首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程。 第二个流程是单纯使用Cas的流程。 第三个图是Shiro集...
    99+
    2023-05-31
    springboot shiro cas
  • Spring Boot集成Redis实战操作
    最近在使用Spring Boot,发现其功能真是强大,可以快速的集成很多的组件功能,非常方便:今天就来介绍下,如何集成Redis。定义Redis 是一个高性能的key-value数据库。它支持存储的value类型很多,包括string(字符...
    99+
    2023-06-02
  • 使用Spring boot如何实现对Mybatis进行集成
    使用Spring boot如何实现对Mybatis进行集成?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。本章目标整合 Mybatis ,并集成 Druid 数据...
    99+
    2023-05-31
    springboot mybatis
  • Spring Boot如何与NumPy集成,加速数据处理?
    随着数据处理的需求越来越高,数据处理的速度也成为了一个关键问题。NumPy是一个高性能的科学计算库,可以在Python中进行矩阵运算、数值分析、图像处理等操作,而Spring Boot则是一个快速构建应用程序的框架,可以帮助开发人员快速构...
    99+
    2023-11-13
    大数据 numy spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作