dakota / redlock-php
PHP 中的 Redis 分布式锁
v1.1.0
2018-04-04 13:53 UTC
Requires
- php: >=5.4.0
- colinmollenhour/credis: ^1.7
Suggests
- ext-redis: Native PHP extension for Redis connectivity. Credis will automatically utilize when available.
README
redlock-php - PHP 中的 Redis 分布式锁
- 由 redlock-php 分支自 Ronny Lopez
- 基于 Redlock-rb by Salvatore Sanfilippo
该库实现了基于 Redis 的分布式锁管理算法,该算法在 Redis 网站上进行了描述 (请点击查看)。
它依赖于 Credis 进行 Redis 连接。Credis 提供了一个本地的纯 PHP 实现,如果可用,它将自动切换到使用 phpredis 以提高性能。
创建锁管理器
$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 毫秒)。