tinywan / redlock-php
PHP构建composer packagist的Redis分布式锁
2.0
2018-11-13 08:05 UTC
Requires
- php: >=5.6.0
- ext-redis: *
This package is auto-updated.
Last update: 2024-09-13 21:10:36 UTC
README
redlock-php - PHP中的Redis分布式锁
基于Redlock-rb,由Salvatore Sanfilippo开发,该库实现了基于Redis的分布式锁管理算法,该算法在这篇博客文章中进行了描述。
composer install
composer require tinywan/redlock-php
创建锁管理器
$servers = [ ['127.0.0.1', 6379, 0.01], ['127.0.0.1', 6389, 0.01], ['127.0.0.1', 6399, 0.01], ]; $redLock = new RedLock($servers);
获取锁
$lock = $redLock->lock('my_resource_name', 1000);
其中资源名称是你想要锁定的唯一标识符,1000是锁的有效时间(毫秒)。
如果未获取锁,则返回值为false
(你可以重试),否则返回表示锁的数组,包含三个键
Array ( [validity] => 9897.3020019531 [resource] => my_resource_name [token] => 53771bfa1e775 )
- validity,表示锁有效时间的整数。
- resource,用户指定的锁定资源名称。
- token,用于安全释放锁的随机令牌值。
释放锁
$redLock->unlock($lock)
可以设置获取锁的重试次数(默认为3)和重试延迟(默认为200毫秒)。
重试延迟实际上是在$retryDelay / 2
毫秒和指定的$retryDelay
值之间随机选择。
免责声明
正如原始的antirez版本所述,此代码实现了一个目前尚在提案阶段的算法,尚未进行正式分析。在使用生产环境之前,请确保你理解其工作原理。