chargeover/redlock-php

此软件包的最新版本(v1.0.9)没有提供许可证信息。

PHP的Redis分布式锁

v1.0.9 2017-10-31 15:38 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:32 UTC


README

redlock-php - PHP的Redis分布式锁

该库实现了基于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毫秒)。