Skip to content

About

一款基于 Redis 实现的分布式锁,具有操作原子性,防止锁悬挂,防止锁误删,支持锁等待,支持锁续期,支持可重入。

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

redis-lock

特性

一款基于 Redis 实现的分布式锁,拥有以下特性:

  • 操作原子性,加锁、解锁和续期等操作为原子操作。
  • 防止锁悬挂,避免服务宕机未解锁造成死锁。
  • 防止锁误删,避免错误释放其他线程持有的锁。
  • 支持锁等待,允许使用次数或超时时间进行重试。
  • 支持锁续期,避免业务处理超时造成锁过期自动释放。
  • 支持可重入,允许同一线程多次加锁。

使用方式

手动管理

  1. 引入依赖

    <dependency>
        <groupId>com.moralok.redis-lock</groupId>
        <artifactId>core</artifactId>
        <version>${version}</version>
    </dependency>
  2. 使用

    public class Test {
        public static void main(String[] args) {
            RedisClient redisClient = RedisClient.create("redis://localhost:6379/0");
            RedisLockManager redisLockManager = new RedisLockManager(redisClient);
            RedisReentrantLock lock = redisLockManager.getLock("lockKey");
            try {
                lock.lock(3);
                logger.info("processing start...");
                logger.info("processing end");
            } finally {
                lock.unlock();
            }
        }
     }

测试或手动使用时,Redis 地址不再写死,默认回退到 localhost:6379,可通过环境变量 REDIS_HOST、REDIS_PORT(或系统属性 redis.host、redis.port)覆盖,例如:REDIS_HOST=192.168.1.10 mvn test。

使用 redis-lock-spring-boot-starter

  1. 引入依赖

    <dependency>
        <groupId>com.moralok.redis-lock</groupId>
        <artifactId>redis-lock-spring-boot-starter</artifactId>
        <version>${version}</version>
    </dependency>
  2. 在代码中使用

    @RestController
    public class TestController {
    
        @Autowired
        private RedisLockManager redisLockManager;
    
        @GetMapping("/test")
        public String test() {
            RedisReentrantLock lock = redisLockManager.getLock("test:lock");
            try {
                lock.lock(3);
            } finally {
                lock.unlock();
            }
            return "success";
        }
    }

About

一款基于 Redis 实现的分布式锁,具有操作原子性,防止锁悬挂,防止锁误删,支持锁等待,支持锁续期,支持可重入。

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages