/** * 以延迟过期的方式设置过期时间 * @param string $key 键名 * @param int $time 过期时间(单位:秒)。不大于0,则设为永不过期 * @param int $delayTime 延迟过期时间,如果未设置,则使用配置中的设置 * @return boolean 是否成功 */ public function expireDE($key, $time, $delayTime = null) { try { //$time不大于0,则永不过期 if ($time <= 0) { $this->handler->del(self::timeKey($key)); return $this->handler->persist($key); } if ($this->hasDE($key)) { $delayTime = $this->getDelayTime($delayTime); $ret = $this->handler->multi()->expire($key, $time + $delayTime)->setex(self::timeKey($key), $time + $delayTime, self::setValue(['expire_time' => time() + $time + $delayTime, 'delay_time' => $delayTime]))->exec(); return $ret !== false ? true : false; } return false; } catch (RedisException $ex) { self::exception($ex); //连接状态置为false $this->isConnected = false; } return false; }