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

springboot多实例部署时,@Scheduled注释的方法重复执行

问题:springboot多实例部署时,@Scheduled注释的方法重复执行

在 Spring Boot 中要实现 Redis 的SET NX EX命令,可以借助 Spring Data Redis 来完成。SET NX EX命令用于在键不存在时设置键值对,并同时设置过期时间。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
</dependencies>

当spring-boot-starter-data-redis依赖版本比较旧时,可以使用使用 Lua 脚本实现 SET NX EX,前提是不使用redis集群。
org.springframework.dao.InvalidDataAccessApiUsageException: EvalSha is not supported in cluster environment 异常时,这是因为在 Redis 集群环境下,EvalSha 命令存在一定限制,Spring Data Redis 在执行 Lua 脚本
时默认可能会尝试使用 EvalSha 命令,而该命令在集群环境中并不总是被支持。
或者分两步操作
先使用 SETNX 尝试设置键值对,若设置成功再使用 EXPIRE 设置过期时间。但这种方式不是原子操作,在 SETNX 和 EXPIRE 之间可能会出现异常,导致锁没有设置过期时间,造成死锁。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

@Service
public class RedisLockServiceV2 {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    public boolean setNXEX(String key, String value, long timeout, TimeUnit timeUnit) {
        Boolean setResult = redisTemplate.opsForValue().setIfAbsent(key, value);
        if (setResult != null && setResult) {
            redisTemplate.expire(key, timeout, timeUnit);
            return true;
        }
        return false;
    }
}

相关文章:

  • 2025最新版Pycharm如何设置conda虚拟环境运行程序
  • 三元运算符(Ternary Operator):简洁而强大的条件表达式
  • Deepseek Natively Sparse Attention
  • vue2和vue3的按需引入的详细对比通俗易懂
  • ios App的启动过程和启动优化
  • nlp|微调大语言模型初探索(3),qlora微调deepseek记录
  • IP组播基础
  • VSCode自定义快捷键和添加自定义快捷键按键到状态栏
  • **ARM Cortex-M4** 和 **ARM Cortex-M7* 运行freeRTOS
  • Linux系统资源监控:全面掌握目录、文件、内存和硬盘使用情况
  • 如何在本地和服务器新建mysql用户和密码
  • MATLAB学习之旅:数据插值与曲线拟合
  • 【Cadence射频仿真学习笔记】Pcell Designer设计电感学习笔记
  • Java集合框架之List接口详解
  • linux5-多任务--进程fork()
  • 自动化测试中如何高效进行元素定位!
  • 第1章 快速认识线程
  • 人工智能 - 脑机融合:人类脑组织操控机器人,具身智能时代的革命性突破
  • 拥抱健康生活,开启养生之旅
  • 分布式数据库:架构演进、核心挑战与行业落地实践
  • 公司制做网站/线下引流推广方法
  • 传媒网站建设网/安卓手机优化软件哪个好
  • 商业网站建设常识/网时代教育培训机构怎么样
  • 电子商务网站服务器/西安网站维护公司
  • 容桂网站制作代理商/网站开发的基本流程
  • 网站建设项目申请/查域名备案