1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace Illuminate\Cache;
- class RedisLock extends Lock
- {
- /**
- * The Redis factory implementation.
- *
- * @var \Illuminate\Redis\Connections\Connection
- */
- protected $redis;
- /**
- * Create a new lock instance.
- *
- * @param \Illuminate\Redis\Connections\Connection $redis
- * @param string $name
- * @param int $seconds
- * @param string|null $owner
- * @return void
- */
- public function __construct($redis, $name, $seconds, $owner = null)
- {
- parent::__construct($name, $seconds, $owner);
- $this->redis = $redis;
- }
- /**
- * Attempt to acquire the lock.
- *
- * @return bool
- */
- public function acquire()
- {
- if ($this->seconds > 0) {
- return $this->redis->set($this->name, $this->owner, 'EX', $this->seconds, 'NX') == true;
- }
- return $this->redis->setnx($this->name, $this->owner) === 1;
- }
- /**
- * Release the lock.
- *
- * @return bool
- */
- public function release()
- {
- return (bool) $this->redis->eval(LuaScripts::releaseLock(), 1, $this->name, $this->owner);
- }
- /**
- * Releases this lock in disregard of ownership.
- *
- * @return void
- */
- public function forceRelease()
- {
- $this->redis->del($this->name);
- }
- /**
- * Returns the owner value written into the driver for this lock.
- *
- * @return string
- */
- protected function getCurrentOwner()
- {
- return $this->redis->get($this->name);
- }
- /**
- * Get the name of the Redis connection being used to manage the lock.
- *
- * @return string
- */
- public function getConnectionName()
- {
- return $this->redis->getName();
- }
- }
|