package com.example.demo.util;
import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.TimeUnit;
public class RedisLock {
public static RedissonClient redissonClient = getRedissonClient();
public static void main(String... args) {
//模拟并发场景
Thread one = new Thread() {
@Override
public void run() {
// RedisLock.lock(redissonClient);
// RedisLock.trylock(redissonClient);
// RedisLock.lockNoWtachDog(redissonClient);
RedisLock.trylockNoWatchDog(redissonClient);
}
};
one.start();
// Thread two = new Thread() {
// @Override
// public void run() {
// RedisLockOne.lock(redissonClient);
// }
// };
// two.start();
}
public static RedissonClient getRedissonClient() {
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379")
.setPassword("password")
.setDatabase(0);
RedissonClient redisson = Redisson.create(config);
return redisson;
}
public static void lock(RedissonClient redisson) {
RLock lock = redisson.getLock("anyLock");
// 最常见的使用方法 防止秒杀系统出现超卖 可延长锁的时间
//如果负责储存这个分布式锁的Redisson节点宕机以后,
// 而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。
// 为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,
// 它的作用是在Redisson实例被关闭前,不断的延
Redisson可重入锁
最新推荐文章于 2025-03-04 15:47:44 发布