neovg / phpredis-lock
使用 PHPRedis 作为后端支持的简单互斥锁锁定类,支持 TTL。
1.0.4
2021-12-03 17:18 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-redis: *
- cakephp/chronos: ^1.0 || ^2.0
- florianwolters/component-util-singleton: 0.3.*
- neovg/php-struct: ^1.4
Requires (Dev)
- ext-pcntl: *
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-29 05:29:45 UTC
README
使用 PHPRedis 作为后端支持的简单互斥锁锁定类,支持 TTL。
安装
composer require neovg/phpredis-lock
设置
\NeoVg\PhpRedisLock\Lock::getInstance()->setConfig( (new \NeoVg\PhpRedisLock\ConfigStruct()) ->withHost('127.0.0.1') ->withPort(6379) ->withDatabase(11) );
使用
获取和释放
if (!\NeoVg\PhpRedisLock\Lock::getInstance()->acquire('name')) { echo 'could not acquire lock'; } if (!\NeoVg\PhpRedisLock\Lock::getInstance()->release('name')) { echo 'could not release lock'; }
非阻塞获取
\NeoVg\PhpRedisLock\Lock::getInstance()->acquire('name', 0);
自定义等待时间(120秒)
\NeoVg\PhpRedisLock\Lock::getInstance()->acquire('name', 120);
TTL(60秒)
\NeoVg\PhpRedisLock\Lock::getInstance()->acquire('name', null, 60);
检查是否已被(此进程)获取
\NeoVg\PhpRedisLock\Lock::getInstance()->isAcquired('name');
检查是否已被(其他进程)锁定
\NeoVg\PhpRedisLock\Lock::getInstance()->isLocked('name');
获取现有锁的信息
$lockInfo = \NeoVg\PhpRedisLock\Lock::getInstance()->get('name;);