RedisLock.php 768 B

123456789101112131415161718192021222324252627282930313233343536
  1. <?php namespace App\Servers\Redis;
  2. use App\Facades\Servers\Redis\Redis;
  3. /**
  4. * 缓存上锁
  5. *
  6. */
  7. class RedisLock
  8. {
  9. /**
  10. * 上异步锁
  11. * @param string $key 上锁key名
  12. * @param mixed $value 上锁key值
  13. * @param int $ex 加上互斥锁时长,避免超时
  14. */
  15. public function lock($key,$value,$ex=20){
  16. // 上锁结果
  17. return Redis::set($key, $value,'EX',$ex,'NX');
  18. }
  19. /**
  20. * 释放异步锁
  21. * @param string $key 上锁key名
  22. * @param mixed $value 上锁key值
  23. *
  24. */
  25. public function unlock($key,$value){
  26. // 释放锁
  27. if( Redis::get($key) == $value ) return Redis::del($key);
  28. // 释放失败
  29. return true;
  30. }
  31. }