redis做分布式锁以及释放锁

记录项目中使用redis去做锁,实现同一时刻只有进程可以抢到锁并执行以及使用完后释放锁【删除锁】
在这里插入图片描述这个方法中,返回的是boolean类型的值,该方法代表着如果没有这个key就添加这个key同时返回true,如果有这个key,就返回false,这样保证了多个线程执行该方法时,在某一线程执行完成并释放锁之后才会被其他线程抢到,否则在这期间只会有一个在执行

Java Spring Boot 中实现 Redis 可以通过 Redisson 工具包来实现。Redisson 是一个基于 Redis分布式 Java 对象和服务框架,提供了分布式锁分布式对象、分布式集合和分布式服务等功能,可以很方便地实现 Redis 。 下面是一个使用 Redisson 实现 Redis 的示例代码: 1. 首先,在 pom.xml 文件中添加 Redisson 的依赖: ``` <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.12.1</version> </dependency> ``` 2. 在需要使用 Redis 的代码中,注入 RedissonClient 对象,并使用它来获取: ``` @Autowired private RedissonClient redissonClient; public void doSomething() { String lockKey = "lock_key"; RLock lock = redissonClient.getLock(lockKey); try { // 尝试获取,最多等待 10 秒,的有效期为 30 秒 boolean success = lock.tryLock(10, 30, TimeUnit.SECONDS); if (success) { // 获取成功,执行业务逻辑 // ... } else { // 获取失败,处理异常情况 // ... } } catch (InterruptedException e) { // 处理异常情况 // ... } finally { // 释放 lock.unlock(); } } ``` 在上面的代码中,我们使用 RedissonClient 对象来获取对象 RLock,然后调用 RLock 的 tryLock 方法来尝试获取,最多等待 10 秒,的有效期为 30 秒。如果获取成功,则执行业务逻辑;否则处理异常情况。最后,在 finally 块中释放。 需要注意的是,在使用 Redis 时,要确保的粒度足够细,避免因的范围过大而导致的性能问题。另外,在的有效期内,业务逻辑必须尽快完成,避免因的过期而导致的并发问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值