sdyyf/rlock
Composer 安装命令:
composer require sdyyf/rlock
包简介
redis lock for laravel.
README 文档
README
Redis distributed lock for laravel/lumen
安装
composer require sdyyf/rlock
Laravel可通过如下命令发布配置文件
php artisan vendor:publish --provider="Sdyyf\Rlock\RlockServiceProvider"
如果你的项目没有vendor:publish命令,需要手动将配置文件复制到config目录下,配置文件路径:[项目根目录/vendor/sdyyf/rlock/config/rlock.php]
使用
配置
根据你的项目实际情形,修改 config/rlock.php 配置文件
connection 指定使用的redis连接,默认default
prefix 锁名称的统一前缀
lock_config 锁的默认配置
expire 锁的默认有效时长,即取锁成功后持有锁的时长。单位:秒
timeout 默认取锁超时的时长,超时放弃,单位:秒。用于自旋锁和排队锁
sleep 默认自旋重试间隔,单位:毫秒。用于自旋锁重试
queue_sleep 默认排队重试间隔,单位:毫秒。用于排队锁重试
max_length 默认最大排队长度,队列已满时放弃排队。设置为0时,不限长度。用于排队锁重试
示例
/* 简单锁 */
$lock = Rlock::getSimpleLock('lockname', 10);
if ($lock->get()) {
echo 'get lock succeed.';
} else {
echo 'get lock failed.'
}
/* 自旋锁 */
$lock = Rlock::getSpinLock('lockname', 10, [
'timeout' => 10,
'sleep' => 100
]);
if ($lock->get()) {
echo 'get lock succeed.';
} else {
echo 'get lock failed.'
}
/* 排队锁 */
//使用默认设置
//$lock = Rlock::getQueueLock('lockname', 10);
//使用自定义设置
$lock = Rlock::getQueueLock('lockname', 10, [
'timeout' => 10,
'sleep' => 100,//不设置该参数时,默认值为lock_config.queue_sleep配置项设定值,注意这里的参数名为sleep
'max_length' => 10
]);
if ($lock->get()) {
echo 'get lock succeed.';
} else {
echo 'get lock failed.'
}
回调支持
$lock = Rlock::getSimpleLock('lockname', 10);
//result为闭包执行结果,或者获取锁失败返回false
$result = $lock->get(function() {
//your business logic...
});
sdyyf/rlock 适用场景与选型建议
sdyyf/rlock 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 18 次下载、GitHub Stars 达 3, 最近一次更新时间为 2022 年 05 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 sdyyf/rlock 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sdyyf/rlock 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 18
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-05-12