IT袋

当前位置:主页 > 经验教程 > 建站编程 >

SpringBoot

SpringBoot Redis分布式锁的正确实现方式(6)

时间:2024-01-24 18:50:11 来源:IT袋 作者:马勇
导读:SpringBoot,RedisLockClient 最后,还需要提供一个客户端给方便使用。 @Componentpublic class RedisLockClient { @Autowired private StringRedisTemplate redisTemplate; public Lock getLock(String name

SpringBoot

RedisLockClient

最后,还需要提供一个客户端给方便使用。

@Component
public class RedisLockClient {
    @Autowired
    private StringRedisTemplate redisTemplate;
    public Lock getLock(String name) {
        return new DistributedLock(name, redisTemplate);
    }
}

单元测试来一个。

@Slf4j
@SpringBootTest(classes = RedisApplication.class)
public class RedisLockTest {
    @Autowired
    private RedisLockClient redisLockClient;
    @Test
    public void testLockSuccess() throws InterruptedException {
        Lock lock = redisLockClient.getLock("order:pay");
        try {
            boolean isLock = lock.tryLock(10, 30, TimeUnit.SECONDS);
            if (!isLock) {
                log.warn("加锁失败");
                return;
            }
            TimeUnit.SECONDS.sleep(3);
            log.info("业务逻辑执行完成");
        } finally {
            lock.unlock();
        }
    }
}

有两个点需要注意。

  1. 释放锁的代码一定要放在finally{}块中。否则一旦执行业务逻辑过程中抛出异常,程序就无法执行释放锁的流程。只能干等着锁超时释放。
  2. 加锁的代码应该写在try {}代码中,放在 try 外面的话,如果执行加锁异常(客户端网络连接超时),但是实际指令已经发送到服务端并执行,就会导致没有机会执行解锁的代码。

小白:“不念,这个方案你管它叫青铜级别而已,这么说还有王者、超神版?我们公司还用错误版分布式锁,难怪有时候出现重复订单,是我肤浅了。”

赶紧将这个方案替换原来的错误或者残血版的Redis分布式锁吧。

以上是IT袋网网关于SpringBoot 及其 Redis分布式锁的正确实现方式的具体介绍,小编希望给网友们带来一些知识。

相关阅读

  • b2b推广网站有哪些 垂直b2b电商平台推荐

    b2b推广网站有哪些 垂直b2b电商平台推荐

    跟大家聊一聊b2b推广网站有哪些和垂直b2b电商平台推荐方面的内容,下面小编为您详细解答 最近,很多小伙伴都反馈给我。我想知道哪些B2B网站在市场上做得很好。以下是IT袋网小编收集的全

  • 前端开发工程师是做什么的 web前端的工作内容

    前端开发工程师是做什么的 web前端的工作内容

    IT袋网为大家说一说前端开发工程师是做什么的和web前端的工作内容方面的讲解,请看下面详细的介绍。 随着Internet的发展和多个终端的普及,前端开发工程师逐渐受到欢迎,但是前端开发工程

  • 什么是Ceph 有什么特点?

    什么是Ceph 有什么特点?

    如果想了解什么是CephIT技巧方面的经验,相关内容具体如下: 概述 Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供 块存储服务 (rbd)、 对象存储

  • [网络工程师]-网络规划与设计-通信规范分析

    [网络工程师]-网络规划与设计-通信规范分析

    相对于大多数人[网络工程师]-网络规划与设计-通信规范分析方面的介绍,下面为详细的介绍。 在网络分析和设计过程中,通信规范分析处于第二个阶段,通过分析网络通信流量和通信模式,发