-
Notifications
You must be signed in to change notification settings - Fork 54
zhaocong6 edited this page Apr 9, 2018
·
1 revision
请安装好所有依赖,并且成功hello world
在同一时间不能有两次并发的系统,如:用户支付,用户抽奖
拒绝恶意用户的并发请求
lock(closure $closure, string $lock_val, int $expiration = 60);
$closure
匿名闭包, 需要锁的代码块(注意: 在锁内执行耗时任务会影响系统并发, 建议将不必要的程序放在闭包外执行)
$lock_val
'user:pay:1' user是用户模块 pay是用户模块下的支付模块 1是用户id
该锁含义:锁住用户1的所有支付行为
'user:pay'
该锁含义:锁住所有用户模块支付功能
$expiration
单个锁进程的最大占锁时间,防止死锁
特点:性能好, 并发高
缺点:当一个进程获得抢占锁后,其他进程将全被拒绝
在同一时间允许多次并发的系统,如:秒杀
为了提升接口性能, 建议和异步队列配合使用
queueLock(closure $closure, string $lock_val, int $expiration = 60, int $max_queue_process = 100, int $wait_time);
$closure
匿名闭包, 需要锁的代码块(注意: 在锁内执行耗时任务会影响系统并发, 建议将不必要的程序放在闭包外执行)
$lock_val
'user:pay:1' user是用户模块 pay是用户模块下的支付模块 1是用户id
该锁含义:锁住用户1的所有支付行为
'user:pay'
该锁含义:锁住所有用户模块支付功能
$expiration
单个锁进程的最大占锁时间,防止死锁
$max_queue_process
队列进程池, 根据接口最大并发而定(一般比最大并发小).接口安全机制,超过队列池的进程会被拒绝,保证系统稳定性.
$wait_time
进程等待周期时间(微妙)
特点:适用于需要排队的系统, 当一个进程获得锁后,其他进程将排队(排队会有队列池,超过队列池的进程会被拒绝,保证系统稳定性)
缺点:性能低