php 使用redisLock 解决超卖问题
作者:钓赛通
发布时间:2022-02-15
点击数:
扩展地址:https://github.com/ar414-com/php-redis-lock
使用这个扩展可以很好的解决超卖问题,但是会影响吞吐量,因为这个使用单一通道处理。不是并行处理。
Usage
New instance
use Ar414\RedisLock;$redis = new \Redis();
$redis->connect('127.0.0.1','6379');
$lockTimeOut = 5;
$redisLock = new RedisLock($redis,$lockTimeOut);
Get Lock 获取锁
$lockKey = 'lock:user:wallet:uid:1001';
$lockExpire = $redisLock->getLock($lockKey);
if(!$lockExpire || $lockExpire < time()){
throw new \Exception('Busy Lock');
}//TODO:Business logic
Release Lock 释放锁
$redisLock->releaseLock($lockKey,$lockExpire);