/** * 对指定键名加锁(此锁并不对键值做修改限制,仅为键名的锁标记) * 此方法可用于防止惊群现象发生,在get方法获取键值无效时,先判断键名是否加锁, * 如果已加锁,则不获取新值;如果未加锁,则获取新值,设置新的缓存 * @param string $key 键名 * @param int $time 加锁时间 * @return boolean 是否成功 */ public function lock($key, $time = 60) { try { return $this->handler->setex(self::lockKey($key), $time, 1); } catch (RedisException $ex) { self::exception($ex); //连接状态置为false $this->isConnected = false; } return false; }
/** * 设置键值 * @param string $key 键名 * @param mixed $value 键值 * @param int $time 过期时间,默认为-1,<=0则设置为永不过期 * @return boolean 是否成功 */ public function set($key, $value, $time = -1) { try { if ($time > 0) { return $this->handler->setex($key, $time, self::setValue($value)); } return $this->handler->set($key, self::setValue($value)); } catch (RedisException $ex) { self::exception($ex); //连接状态置为false $this->isConnected = false; } return false; }