zonghay/redlock-hyperf 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zonghay/redlock-hyperf

Composer 安装命令:

composer require zonghay/redlock-hyperf

包简介

redis redlock for hyperf

关键字:

README 文档

README

composer require zonghay/redlock-hyperf

Based on redlock-php transform to Hyperf 2.1.*

本sdk基于redlock-php向hyperf ~2.1版本改造。

使用前建议先了解一下Redlock算法的原理,Redis作者Antirez文章解释Redlock算法(英文)

我自己也写了一篇文章对RedLock进行了翻译 基于Redis的分布式锁算法RedLock及RedLock-Hyperf实现

使用

简单使用

    try {
        $lock = $this->container->get(RedLock::class)->setRedisPoolName()->setRetryCount(1)->lock('redlock-hyperf-test', 60000);
        if ($lock) {
            //do your code
            $this->container->get(RedLock::class)->unlock($lock);
        }
    } catch (\Throwable $throwable) {
        var_dump($throwable->getMessage());
    }
  • setRedisPoolName方法用于指定Redlock使用哪些Redis实例作为分布式独立节点,这里需要传入索引数组,默认['default'],数组的值应该是/config/autoload/redis.php下的连接池name 关于为什么要使用独立的Redis节点:

    img.png

  • setRetryCount方法用于设置获取锁的重试次数,默认2次

  • setRetryDelay 用于一次获取锁失败后延迟时间后重试,默认200,单位毫秒

  • lock方法,获取锁

    • resource:锁的key
    • ttl:锁过期时间,单位毫秒。
    • return:array|false
  • unlock方法,释放锁

    • 参数:lock方法成功后的return
  • 如果担心请求保持锁阶段进程出现重启或退出情况,建议增加以下代码

//参考 RedlockHyperf\Aspect\RedLockAspect
if ($lock) {
  //to release lock when server receive exit sign
  Coroutine::create(function () use ($lock) {
  $exited = CoordinatorManager::until(Constants::WORKER_EXIT)->yield($lock['validity']);
  $exited && $this->redlock->unlock($lock);
  });
  //do your code
  $this->redlock->unlock($lock);
  return $result;
}

注解使用

class IndexController extends AbstractController
{
    /**
     * @RedLockAnnotation(resource="redlock-hyperf-test", poolName={"default"})
     */
    public function index() {}
}

SDK提供 RedlockHyperf\Annotation\RedLockAnnotation 注解,作用类于方法上,可以配置resource(必填),poolName,poolName,poolName,clockDriftFactor,ttl等参数

统计信息

  • 总下载量: 7.28k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 11
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 11
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-03-03

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固