/** * 对指定键名加锁(此锁并不对键值做修改限制,仅为键名的锁标记) * 此方法可用于防止惊群现象发生,在get方法获取键值无效时,先判断键名是否加锁, * 如果已加锁,则不获取新值;如果未加锁,则获取新值,设置新的缓存 * @param string $key 键名 * @param int $time 加锁时间 * @return boolean 是否成功 */ public function lock($key, $time = 60) { if ($this->driver->checkDriver()) { if (method_exists($this->driver, 'lock')) { return $this->driver->lock($key, $time); } else { return $this->driver->set(self::lockKey($key), 1, $time); } } if ($this->driver->isFallback() && $this->type !== self::$config['fallback']) { return $this->driver->backup()->lock($key, $time); } return false; }