chenjiahao / suospace
redis 分布式锁
Requires
- predis/predis: ^1.1
This package is not auto-updated.
Last update: 2024-09-24 08:00:56 UTC
README
这是一个使用redis实现分布式锁的项目,还实现了令牌桶
composer require chenjiahao/suospace
在app.php文件中添加 LockSpace\LockServiceProvider::class,例如:
'providers' => [
LockSpace\LockServiceProvider::class,
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
Illuminate\Database\DatabaseServiceProvider::clas
配置.env 配置LOCK_SPACE_REDIS 控制使用哪个redis,默认使用default
这是一个独占锁
加锁 $key锁的名称 $expire过期时间 $wait等待锁超时时间,都是以秒为单位,使用app('RedisLock')->lock( $key,$expire,$wait = 0)
解锁 $key锁的名称 app('RedisLock')->unlock($key)
获取一个独占锁 $key锁的名称 $expire过期时间 $wait等待锁超时时间,都是以秒为单位 app('RedisNewLock')->getUpdateLock( $key,$expire,$wait = 0)
获取一个共享锁 $key锁的名称 $expire过期时间 $wait等待锁超时时间,都是以秒为单位 app('RedisNewLock')->getShareLock( $key,$expire,$wait = 0)
解锁 $key锁的名称 app('RedisNewLock')->unlock($key)
获取令牌 $config['key'] 令牌名称 $config['max'] 令牌最大数量 $config['rate'] 每秒产生令牌数 $config['expire'] 令牌桶过期时间 默认 100秒 app('RateLimiter')->getToken(array $config)