PHPackages                             happysir/distributed-lock - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. happysir/distributed-lock

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

happysir/distributed-lock
=========================

A distributed lock based on PHP and redis(swoft)

v1.0.3(5y ago)61221Apache-2.0PHPPHP &gt;7.2CI failing

Since Aug 4Pushed 5y ago1 watchersCompare

[ Source](https://github.com/SuperHappysir/distributed-lock)[ Packagist](https://packagist.org/packages/happysir/distributed-lock)[ RSS](/packages/happysir-distributed-lock/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (6)Versions (6)Used By (0)

\[TOC\]

### 锁

[](#锁)

加锁是访问临界资源时对资源的保护机制，加锁的目的是对并发访问和并发请求进行保护，未获取到锁的请求将无权操作资源。

> 临界区域指的是一块对公共资源进行访问的代码，并非一种机制或是算法。一个程序、进程、线程可以拥有多个临界区域

### 安装

[](#安装)

```
composer require happysir/distributed-lock
```

### 配置

[](#配置)

```
use Happysir\Lock\RedisLock;
use Swoft\Redis\Pool;
use Swoft\Redis\RedisDb;

return [
    // redis db
    'redis'            => [
        'class'    => RedisDb::class,
        'host'     => '127.0.0.1',
        'port'     => 6379,
        'database' => 0,
        'option'   => [
            'prefix'     => 'swoft:',
            'serializer' => Redis::SERIALIZER_NONE
        ]
    ],
    // redis pool
    Pool::DEFAULT_POOL => [
        'class'       => Pool::class,
        'redisDb'     => \bean('redis'),
        'minActive'   => 10,
        'maxActive'   => 20,
        'maxWait'     => 0,
        'maxWaitTime' => 0,
        'maxIdleTime' => 60,
    ],
    // redis lock
    RedisLock::class   => [
        // redis pool
        'pool' => Pool::DEFAULT_POOL,
    ]
];
```

详细参数：

- `pool` Redis 连接池

### 使用

[](#使用)

#### 注解方式

[](#注解方式)

当前组件提供了注解的方式使用分布式锁，使用方式如下：

```
