redis分布式锁在java中使用例子
时间: 2024-06-25 18:01:20 浏览: 144
Redis分布式锁在Java中是一个常见的用于解决高并发场景下数据一致性问题的解决方案。Redis分布式锁利用了Redis的数据结构和原子操作来实现,提供了简单的锁定和解锁机制。下面是一个简单的Java示例:
```java
import redis.clients.jedis.Jedis;
import java.util.concurrent.TimeUnit;
public class RedisLock {
private static final String LOCK_KEY = "distributed_lock_key";
private static final int REDIS_LOCK_TIMEOUT = 60; // 锁的有效时间, 单位秒
public boolean lock(Jedis jedis) {
try {
// 使用SETNX命令设置键值(如果不存在则创建,并设置过期时间为60秒),返回值为1表示成功获取锁
return jedis.setnx(LOCK_KEY, System.currentTimeMillis() + REDIS_LOCK_TIMEOUT * 1000) == 1;
} catch (Exception e) {
return false;
}
}
public void unlock(Jedis jedis) {
// 使用DEL命令删除键,释放锁
jedis.del(LOCK_KEY);
}
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost", 6379); // 连接本地Redis实例
try {
if (lock(jedis)) {
// 获取锁后执行业务逻辑
System.out.println("Acquired lock, executing business logic...");
// 业务逻辑...
// 在完成业务逻辑后,记得解锁
unlock(jedis);
} else {
System.out.println("Failed to acquire lock, already locked by another process.");
}
} finally {
jedis.close(); // 关闭连接
}
}
}
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)