PHPackages                             nabao/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. [Caching](/categories/caching)
4. /
5. nabao/lock

ActiveLibrary[Caching](/categories/caching)

nabao/lock
==========

高性能, 分布式, 并发抢占锁, 队列锁

1.2.7(5y ago)2821.4k↓100%54MITPHPPHP &gt;=7.0

Since May 8Pushed 5y ago10 watchersCompare

[ Source](https://github.com/zhaocong6/lock)[ Packagist](https://packagist.org/packages/nabao/lock)[ RSS](/packages/nabao-lock/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (1)Versions (15)Used By (0)

[laravel版本](https://github.com/zhaocong6/laravel-lock)

环境要求
====

[](#环境要求)

```
1.PHP >= 7
2.composer
3.redis(必须支持lua)
4.predis

```

composer 安装
===========

[](#composer-安装)

移步 [composer中文网](https://www.phpcomposer.com/).

redis 安装
========

[](#redis-安装)

[redis中文网](http://www.redis.net.cn/)

predis 安装
=========

[](#predis-安装)

```
composer require predis/predis

```

lock 安装
=======

[](#lock-安装)

```
composer require nabao/lock

```

抢占锁
===

[](#抢占锁)

lock(callable $callback, string $lock\_val)
-------------------------------------------

[](#lockcallable-callback-string-lock_val)

多进程并发时, 其中某一个进程得到锁后, 其他进程将被拒绝

```
$callback
            回调函数, 可返回值
$lock_val
            锁定值

```

多参数抢占锁
======

[](#多参数抢占锁)

lock(callable $callback, array $lock\_vals)
-------------------------------------------

[](#lockcallable-callback-array-lock_vals)

多进程并发时, 其中某一个进程得到锁后, 其他进程将被拒绝

```
$callback
            回调函数, 可返回值
$lock_vals
            锁定值(数组)

```

队列锁
===

[](#队列锁)

queueLock($closure, $lock\_val, $max\_queue\_process = 100, $expiration = 60)
-----------------------------------------------------------------------------

[](#queuelockclosure-lock_val-max_queue_process--100-expiration--60)

多进程并发时, 其中某一个进程得到锁后, 其他进程将等待解锁(配置最大等待进程后, 超过等待数量后进程将被拒绝)

```
$callback
                回调函数, 可返回值
$lock_val
                锁定值
$max_queue_process
                队列最大等待进程
$expiration
                进程最大执行时间

```

多参数队列锁
======

[](#多参数队列锁)

queueLock($closure, $lock\_vals, $max\_queue\_process = 100)
------------------------------------------------------------

[](#queuelockclosure-lock_vals-max_queue_process--100)

多进程并发时, 其中某一个进程得到锁后, 其他进程将等待解锁(配置最大等待进程后, 超过等待数量后进程将被拒绝)

```
$callback
                回调函数, 可返回值
$lock_vals
                锁定值(数组)
$max_queue_process
                队列最大等待进程

```

使用
==

[](#使用)

```
//静态调用
$lock_val = 'user:pay:1';
Lock::lock(function($redis){
   echo 'hello world!';
}, $lock_val);

//实例化调用
$lock = new Lock();
$lock_val = 'user:pay:1';
$lock->lock(function($redis){
    echo 'hello world!';
}, $lock_val);

//多参数锁
$lock = new Lock();
$lock_val[] = 'user:pay:1';
$lock_val[] = 'user:pay:2';
$lock->lock(function($redis){
    echo 'hello world!';
}, $lock_val);

```

限流
==

[](#限流)

isActionAllowed($key, $period, $max\_count)
-------------------------------------------

[](#isactionallowedkey-period-max_count)

```
$key        限制key
$period     限制时间(秒)
$max_count  限制时间内最大数量

```

config配置
========

[](#config配置)

目前兼容tp.其它框架请实例化传参
-----------------

[](#目前兼容tp其它框架请实例化传参)

```
 /*
    |--------------------------------------------------------------------------
    | lock配置文件
    |--------------------------------------------------------------------------
    |
    |drive 锁驱动(默认redis)
    |
    |redis redis驱动配置
    |   host 地址
    |   port 端口
    |
    |params 参数配置
    |   max_queue_process  进程池最大进程
    |   expiration         锁值过期时间
    |
    */
    'lock'=>[
        'drive' =>  'redis',
        'redis' =>  [
            'host'  =>  '127.0.0.1',
            'port'  =>  '6379'
        ],
        'params' => [
            'max_queue_process' => 100
            'expiration'        =>  5
        ]
    ]

```

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity37

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 98.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~62 days

Recently: every ~105 days

Total

14

Last Release

2115d ago

PHP version history (2 changes)1.0PHP &gt;=5.3

1.2.2PHP &gt;=7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/1c94ee8ccffcabecd7bc49302cd8ee837d904930a3ad68d87658519fb731ac27?d=identicon)[zhaocong](/maintainers/zhaocong)

---

Top Contributors

[![zhaocong6](https://avatars.githubusercontent.com/u/26103783?v=4)](https://github.com/zhaocong6 "zhaocong6 (63 commits)")[![userzhangjinlong](https://avatars.githubusercontent.com/u/18733373?v=4)](https://github.com/userzhangjinlong "userzhangjinlong (1 commits)")

---

Tags

lockredislock

### Embed Badge

![Health badge](/badges/nabao-lock/health.svg)

```
[![Health](https://phpackages.com/badges/nabao-lock/health.svg)](https://phpackages.com/packages/nabao-lock)
```

###  Alternatives

[pdffiller/qless-php

PHP Bindings for qless

29113.2k1](/packages/pdffiller-qless-php)[icecave/chastity

Distributed advisory locking for PHP.

1513.3k](/packages/icecave-chastity)[rtckit/react-redlock

Asynchronous distributed locks with Redis and ReactPHP

177.8k1](/packages/rtckit-react-redlock)[avtonom/semaphore-bundle

A generic locking Symfony bundle for PHP, that uses named locks for semaphore acquire and release, to guarantee atomicity

122.8k](/packages/avtonom-semaphore-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
