redisson分布式锁的基础使用

3 阅读1分钟

1、配置redis连接

springboot 2.2.x以上版本只需配置redis无需另外配置redisson

2、使用方式

import cn.hutool.extra.spring.SpringUtil;

import java.util.concurrent.TimeUnit;

public class LockUtil {

    private final static RedissonClient redisson = SpringUtil.getBean(RedissonClient.client.class);

    public static void redissonLock(String key, Runnable runnable) throws Exception {
        // 引入redis分布式锁
        RLock lock = redisson.getLock(key);
        try {
            // 尝试获取锁,最多等待 10 秒,锁自动过期时间为 5 秒
            boolean isLocked = lock.tryLock(10, 5, TimeUnit.SECONDS);
            if (isLocked) {
                // todo 执行业务操作
                runnable.run();
            } else {
                // todo 未获取到锁时的处理
            }
        } finally {
            // 释放锁
            if (lock.isHeldByCurrentThread()) {
                lock.unlock();
            }
        }
    }
}
     
   

3、 使用要点

  1. 根据需求配置等待时间
  2. 处理未获取到锁的情况
  3. 执行操作过后需要采用finally去解锁